我已经实现了一个 websocket 服务器,它充当某些事件的观察者。
@ServerEndPoint
public class Server implements SomeObserver
我已经从 SomeObserver 类实现了 objectChanged()。objectChanged() 将在发生某些事件时执行。这是常见的观察者实现。
应用程序逻辑是这样的:客户端连接到 Websocket 服务器,服务器为适当的客户端发送适当的事件。
我已经这样编码了:
@ServerEndPoint
public class Server implements SomeObserver
{
Session clientSession = null;
@OnOpen
public void OnOpen(Session session}
{
clientSession = session;
}
//implemented OnMessage and OnClose, OnError methods
public void objectChanged(Event[] event)
{
clientSession.sendAsyncRemote().sendObject(someObjectInfo);
}
我从未使用过任何会话标识。但令人惊讶的是,服务器会为各个会话发送适当的消息。服务器不会在没有任何会话身份验证或标识的情况下将一个会话事件发送到另一个会话。
有谁知道在 Tyrus API 中为什么以及如何发生。我想知道 Tyrus webocket 是如何支持会话识别的。