我正在使用websocket客户端的python和java实现。但是,由于onMessage是异步的,它将立即开始执行,即使正在执行另一个函数。如何在处理下一条消息之前确保每个onMessage函数完全完成。谢谢!
编辑: 我正在订阅多个频道,无论哪个频道发送消息,我的onMessage处理程序都会处理该消息。我需要我的onMessage处理程序在它开始处理下一条消息之前完全处理它收到的每条消息,但我不能丢失任何消息。我希望这有助于澄清一点。
答案 0 :(得分:0)
这听起来只是一个并发问题。怎么样?
private final Object onMessageLock = new Object();
@OnMessage
public void onMessage(String message, Session session)
{
synchronized (onMessageLock)
{
// Handle the message here.
}
}
答案 1 :(得分:0)
我测试了Takahiko提出的解决方案。它仅适用于一个客户端。来自不同客户的消息仍将被并行处理。
如果您希望在完成处理之前的消息之后处理所有消息(无论发送它的客户端如何),您必须使Lock对象保持静态:
private static final Object onMessageLock = new Object();