我有
class MyWebSocket extends WebSocketAdapter
我需要使用:
将text1,text2和text3发送到websocket客户端getRemote().sendString(text, new WriteCallback() {...})
这个调用是异步的,所以我希望这个工作是在jetty池的不同线程中完成的。
我的问题是:
我可以确定客户端上的序列是相同的:text1,text2和text3?
如果是,请添加官方文档的链接(如果有的话)。
更新: 在RemoteEndpoint的文档中,可以阅读:
void sendString(String text)
throws IOException
发送短信,阻止直到消息的所有字节都已存在 发送。
和
void sendString(String text,
WriteCallback callback)
启动文本消息的异步传输。这种方法 可以在传输消息之前返回。开发人员可以提供 发送消息时通知的回叫或 导致错误。
那么,对于带回调的sendString,如果在同一个线程中调用回调,它是如何异步的?
另外,这两种方法有什么区别?
答案 0 :(得分:1)
该调用只是将WebSocket端点的传出文本排队。
然后,当NIO层报告可以写入时,排队的消息将转换为帧,通过WebSocket扩展传递,屏蔽(如果从客户端发送),然后写入套接字。
将该帧的整个缓冲区写入套接字后,将触发WriteCallback。
这些都不在另一个主题上。
只有一个线程处理写入,它只处理来自队列的消息。