WebSocket連接有兩個部分:服務器和客戶端。你可以使用Play2只是使服務器部分和實現與Android(見websocket-android-phonegap),iOS設備(見Unitt),JavaScript的應用程序客戶端...
這裏是一個非常基本從的WebSocket採取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
服務器是重運行。然後,您可以使用JavaScript應用程序,Android應用程序等連接到您的WebSocket ...客戶端是另一回事。
如果您使用的鍍鉻或鉻,只是在開發者工具打開您的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回聲測試,並將其填入您的網址'ws://localhost:9000/connect'
。
來源
2013-07-20 13:22:23
mor
我困惑。 WebSockets是一種解決方法,因爲HTTP不允許雙向有狀態連接。當你開發一個本地應用時,你沒有這個限制(除非你使用的是Apache Cordova或類似的,但是你會使用Javascript)。那你爲什麼要走這條路? – Carsten
嗨卡斯滕。我不知道任何其他允許從服務器到客戶端實時數據推送的雙工協議。本地應用程序的推送通知服務(如GCM)不是實時的。你知道有其他的方法嗎? – ticofab
0MQ是流式發佈/訂閱的解決方案。 http://zeromq.org/ –