Websocket:从不同页面接收消息

时间:2015-09-11 00:03:18

标签: scala playframework websocket akka

我是websockets的新手。我的服务器端似乎没问题。关于客户的问题。   我试图从一个页面发送消息并以这种方式从另一个页面获取消息:

a.html:

var ws = new WebSocket("ws://localhost:9000/ws");
 $("body").on('click', '#some', function () {
        ws.send("clicked");
 });

b.html:

var ws = new WebSocket("ws://localhost:9000/ws");
ws.onmessage = function (event) {
    var message = event.data;
    alert(message);
};

它不起作用。我从未在b上收到消息。然而,当我在一个页面上将这些片段组合在一起时,它按预期工作:

var ws = new WebSocket("ws://localhost:9000/ws");
$("body").on('click', '#some', function () {
     ws.send("clicked");
});
ws.onmessage = function (event) {
     var message = event.data;
     alert(message);
};

那么我做错了什么?它应该这样工作吗?

我使用scala和play2,我的服务器端代码是(使用this手册):

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

class MyWebSocketActor(out: ActorRef) extends Actor {
  def receive = {
    case msg: String =>
      out ! ("I received your message: " + msg)
  }
}

1 个答案:

答案 0 :(得分:0)

这实际上是服务器端问题。应该使用 tryAcceptWithActor 而不是 acceptWithActor