2012-08-30 69 views
21

我正在实现一个Jetty Websocket servlet。 当服务器收到一个新连接时,我想发送一个消息,这个消息将被websocket的onopen函数读取。我希望此消息仅在打开时发送,而不是使用常规的connection.SendMessage()函数。有可能这样做吗?如何?是否有可能在打开websocket连接时发送数据

回答

15

在协议中没有这方面的支持,但你可以自己捏造一些东西。

  • 当您的服务器完成握手时,存储要传递给客户端的初始消息。
  • 在客户端的onopen函数中,发送“读取初始消息”请求。
  • 在您的服务器中,检查该客户端是否未读取其初始消息;回应消息;设置一个标志,说明最初的消息已经发送。
  • 您的客户端和服务器现在都可以自由发送其他消息。
+0

谢谢,我想知道如果我在网上搜索时可能错过了一些东西。我会按照你所建议的方法。 – DPD

34

不要忘记查询字符串。它在WebSocket url中有效。

new Websocket('ws://yoursite.com/path?a=1&b=2&c=3') 

然后,您可以轻松地解析服务器端的这个网址来检索数据。

+0

亚,但你如何解析服务器端的网址?网址本身在哪里可用? –

+0

应该也许应该提到一个@PathParam的选项...参见[这个答案](https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onopen-方法与 - jee7-的WebSockets) –

相关问题