Подтвердить что ты не робот

Простой Websocket в scala/akka/play

Я хотел бы создать простое приложение Websocket с помощью Scala/Akka/Play.

Что я вижу из примеров (например, webchat или недавний разговор в Scala Days), представляет собой смесь между шаблонами JavaScript/Coffeescript, html и т.д.

Клиенты моего приложения Websocket также будут родными мобильными приложениями (Android, iOS), поэтому мне нужно подумать "из браузера".

Как создать приложение websocket, которое может просто нажать строку "привет"?

4b9b3361

Ответ 1

В соединении WebSocket есть две части: сервер и клиент. Вы можете просто сделать часть сервера с помощью Play2 и реализовать клиента с Android (см. websocket-android-phonegap), iOS (см. Unitt), приложение javascript...

Вот пример очень простого подключения к веб-сокету, взятого из http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/:

package controllers

import play.api.mvc._

object Application extends Controller {
  def index = WebSocket.using[String] {
    val out = Enumerator.imperative[String]()
    val in = Iteratee.foreach[String] {
      msg =>
        out.push(msg)
    }
    (in, out)
  }
}

Вам нужно только установить маршрут, указывающий на ваш контроллер conf/routes:

GET /connect  Application.index

Сервер готов к запуску. Затем вы можете подключиться к вашему WebSocket с помощью приложения javascript, приложения для Android и т.д. Клиентская сторона - это другое дело.

Если вы используете хром или хром, просто откройте консоль javascript в инструментах разработчика, и вы можете напрямую подключиться к вашему серверу:

ws = new WebSocket('ws://localhost:9000/connect')
ws.onmessage = function( message ) { console.log( message ); };
ws.send('test')

Он отправит вам ваше сообщение и зарегистрирует его в консоли javascript всякий раз, когда вы его отправляете.

Вы также можете использовать http://www.websocket.org/echo.html эхо-тест и передать его вашему URL-адресу 'ws://localhost:9000/connect'.

Ответ 2

Либо вы можете использовать боль старого Socket, но у вас будут проблемы с перенаправлением портов (то есть через брандмауэры), или вы можете использовать клиентскую библиотеку Websocket, такую ​​как эта в Java: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html