Is getRemote().sendString(msg, new WriteCallback() {..}) sta



我有

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与回调的情况下,如果回调在同一线程中调用,它如何可以是异步的?

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

该调用只是为WebSocket端点排队输出文本。

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

一旦该帧的整个缓冲区被写入套接字,WriteCallback就会被触发。

这些都不是在另一个线程上。

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

相关内容

  • 没有找到相关文章