我想知道是否有可能区分连接到websocket服务器的客户端。在我的项目中,我必须能够从多个客户端发送消息,并将它们发送到特定的客户端。所以我的问题是:有没有一种方法可以识别不同的客户?我尝试在会话接口中使用getId()方法,但它对我的目的是无用的?
当您注册一个新的web_socket客户端时,您可以发送客户端信息,例如user_mail或简单的guid,例如:
HTML页面var pagesessionid = generateGuid();
ws.connect('ws://' + window.location.host + window.location.pathname + 'ws?myclientparam=' + pagesessionid);
or
ws.connect('ws://' + window.location.host + window.location.pathname + 'ws?myclientparam=' + userid);
<<p> Servlet代码/strong>: public class BrowserWebSocket extends WebSocketServlet {
...
...
..
@Override
protected StreamInbound createWebSocketInbound(String string, HttpServletRequest hsr) {
String myclientvalue= "";
if (hsr.getParameter("myclientparam") != null) {
myclientvalue= hsr.getParameter("myclientparam");
ClientWebSocket webSocket = new ClientWebSocket(myclientvalue);
web socket客户端类:
public class ClientWebSocket extends MessageInbound implements Serializable {
public WsOutbound outbound;
public String _myclient= "";
public ClientWebSocket(String myclient) {
_myclient= myclient;
}
您可以使用myclient
到客户端。
这里我使用tomcat websocket的标准servlet,但对于其他情况也是一样的
希望能有所帮助