Play Framework 2.3和javascript websocket客户端库

时间:2014-06-02 18:11:51

标签: scala websocket playframework-2.3

我已经使用Scala 2.11安装了新的Play Framework 2.3,我将使用websocket构建一个应用程序。

带有scala的服务器代码非常简单:

object TestWebSocket extends Controller {

  def mysocketservice = WebSocket.acceptWithActor[String, String] { request => out =>
    TestSocketActor.props(out)
  }
}

route.conf是: GET / wsk / testwebsocket controllers.TestWebSocket.mysocketservice

现在我需要一个Javascript代码来连接我的页面和scala代码,我可以使用哪个javascript库?我见过socket.io,但似乎只适用于node.js服务器。

我知道我可以直接使用WebSocket,但我会使用像socket.io这样的库来与旧浏览器兼容。

有人能帮助我吗? 非常感谢你

3 个答案:

答案 0 :(得分:1)

试试这个javascript。这是在Chrome,Safari,Mozilla等上执行此操作的标准方法。

<script type="text/javascript">
    function WebSocketTest(){
        if ("WebSocket" in window){ 
        var ws = new WebSocket("@routes.controllers.TestWebSocket.mysocketservice().webSocketURL()");
        ws.onopen = function(){
            // Web Socket is connected, send data using send()
            console.log("connected");
            ws.send("Message to send");
        };

        ws.onmessage = function (evt){
            var received_msg = evt.data;
            console.log(evt.data);
        };

        ws.onclose = function(){
            // websocket is closed.
            alert("Connection is closed...");
        };
        }else{
            // The browser doesn't support WebSocket
            alert("WebSocket NOT supported by your Browser!");
        }
    }
WebSocketTest();
</script>

让我知道它是怎么回事。

答案 1 :(得分:0)

我使用优雅的websocket。它非常直观,隐藏了所有复杂性。

https://code.google.com/p/jquery-graceful-websocket/

// open socket using standard syntax
ws = $.gracefulWebSocket("ws://localhost:9000/soc"); //use wss for https
ws.onmessage=onSocMsg;

function onSocMsg(event){
  var jsonObj=json.fromString(event.data);
  alert(event.data);
}

答案 2 :(得分:-1)

您不一定需要客户端库来利用WebSockets。 Mozilla提供了WebSockets API here的实用文档。

话虽如此,如果您希望旧版浏览器上的访问者能够利用您的WebSocket功能,您可能希望查看SockJS之类的项目,这些项目可以优雅地回退到劣等(但更好的支持)协议,如果需要。