我正在将Web应用程序部署在带有注释的websocket端点的Apache Tomcat 8.5(和Glassfish 4.1)上。我需要了解有关注释方法onOpen()
,onClose()
,onMessage()
,onError()
在并发方面的见解:
onOpen()
尚未完成执行时可以调用onOpen()
吗?onClose()
尚未完成执行时可以调用onClose()
吗?onMessage()
尚未完成执行时可以调用onMessage()
吗?onError()
尚未完成执行时可以调用onError()
吗?onOpen()
,onClose()
,onMessage()
,onError()
,而可以调用任何其他方法onOpen()
,onClose()
,{{1 }},onMessage()
尚未执行完毕?还有一个更受约束的情况:上面列出的五个问题是什么,如果我们只谈论相同的onError()
对象,这意味着可以使用具有特定{{1} }实例被调用,而已经使用相同的session
实例调用了on
方法的情况了?
假设有几个用户通过websocket并行连接,断开连接,通信或关闭连接。此外,没有额外使用诸如session
之类的手动锁定机制。
on
,session
,synchronized
,onOpen()
事件未决怎么办?这会阻止其他方法吗?以下,我提供了一个代码段:
onClose()
请随时通过websocket启发有关此并发主题的其他信息。
我可以观察到,如果许多用户通过连接到服务器来触发onMessage()
方法,那么另一位发送websocket消息并触发方法onError()
的用户在所有{{1 }}通话结束。
进一步阅读: