Tyrus WebSocket API中的会话识别

时间:2014-07-30 19:46:38

标签: java session websocket tyrus

我已经实现了一个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如何支持会话识别。

1 个答案:

答案 0 :(得分:-1)

clientSession.sendAsyncRemote().sendObject(someObjectInfo); 

在上面的行中,将基于每个连接创建会话对象。它包含引用套接字对象(每个连接)。

因此,当发送消息时,数据将被传输到相应的客户端。