我有
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就会被触发。
这些都不是在另一个线程上。
只有一个线程处理写,它只处理来自队列的消息。