【发布时间】:2013-03-16 18:54:54
【问题描述】:
这可能很明显,但我对这种范式很陌生。我创建了一个 Jetty Server 并按如下方式注册了我的 websocket 类:
Server server = new Server(8080);
WebSocketHandler wsHandler = new WebSocketHandler()
{
@Override
public void configure(WebSocketServletFactory factory)
{
factory.register(MyEchoSocket.class);
}
};
server.setHandler(wsHandler);
websocket 接收消息正常。我还希望能够在没有先从客户端收到消息的情况下从服务器发送消息。如何访问连接打开时创建的 MyEchoSocket 实例?或者,更一般地说,如何在 MyEchoSocket 中的 onText 方法之外的套接字上发送消息?
【问题讨论】:
-
那不完全是服务器。从那个时候开始发送是没有意义的,因为你不知道你和谁有联系,除非你是在回应(服务)某人。
-
我使用 WebSockets 的原因是我认为它们是您想要从服务器端推送的情况的不错选择。 MyEchoSocket 可以通过它的 onConnect() 方法来跟踪它自己的 WebSocketConnections。我只是不知道程序运行后如何访问 MyEchoSocket 的实例。
-
你想推给谁?如果是在某人连接到您之后,那么可能会产生一些异步处理程序来进行推送。
-
好的,有道理。基本上,每当发生某些其他事件时,我希望能够向任何与我联系的人发送消息。
-
我不精通
jetty,但我就是这样做的。当您收到请求时,您保留对套接字的引用并生成一个处理程序来执行您正在谈论的推送。请注意,在onText或任何服务器处理程序方法返回之后,码头不会关闭套接字。