通过tomcat中的Servlet实现Websocket



我正试图通过servlet实现一个web套接字。我的应用服务器是tomcat 7。

我可以找到使用WebSocketServlet类的示例。但是这个类在tomcat 8中被弃用并删除了。

我看到了另一种选择,那就是用下面的注释类

@ServerEndpoint(value = "/websocket/test")

我需要帮助理解

  1. 我将如何在servlet中使用此注释?servlet在web套接字的情况下是不重要的吗
  2. 如果我用上面的注释和其他注释(如onOpen、onClose等(创建一个普通类,我是否需要将web.xml中的那个类?或者web.xml也不相关

任何"你好世界"链接也将非常有用。

谢谢。====================已编辑====================我已经尝试了这个链接中的聊天示例http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/

但是,当我尝试通过javascript调用套接字时,事件根本没有到达我的服务器。。。。

我终于明白了。所以我在这里回答,供其他人参考。

1( 我将如何在servlet中使用此注释?servlet在web套接字的情况下是不重要的吗?

显然是的,我们不需要servlet作为网络套接字。

2( 如果我用上面的注释以及onOpen、onClose等其他注释创建了一个普通类,我是否需要将该类的条目放在web.xml中?或者web.xml也不相关?

web.xml中也不需要任何条目。

下面是一个示例服务器端代码。

@ServerEndpoint(value = "/echo")
public class Echo {
    @OnOpen
    public void start(Session session) {
        //TODO
    }
    @OnClose
    public void end() {
        //TODO
    }
    @OnMessage
    public void incoming(String message) {
        //TODO
    }
    @OnError
    public void onError(Throwable t) throws Throwable {
        //TODO
    }
}

对于客户端,你可以使用Javascript,只要你有一个HTML5兼容的浏览器。否则,您将使用tyrus库编写java客户端。请参阅此处

最新更新