getRemote()。sendString(msg,new WriteCallback(){..})稳定吗?

时间:2016-11-14 13:10:01

标签: java asynchronous websocket jetty

我有

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,如果在同一个线程中调用回调,它是如何异步的?

另外,这两种方法有什么区别?

1 个答案:

答案 0 :(得分:1)

该调用只是将WebSocket端点的传出文本排队。

然后,当NIO层报告可以写入时,排队的消息将转换为帧,通过WebSocket扩展传递,屏蔽(如果从客户端发送),然后写入套接字。

将该帧的整个缓冲区写入套接字后,将触发WriteCallback。

这些都不在另一个主题上。

只有一个线程处理写入,它只处理来自队列的消息。