我正试图通过servlet实现一个web套接字。我的应用服务器是tomcat 7。
我可以找到使用WebSocketServlet
类的示例。但是这个类在tomcat 8中被弃用并删除了。
我看到了另一种选择,那就是用下面的注释类
@ServerEndpoint(value = "/websocket/test")
我需要帮助理解
- 我将如何在servlet中使用此注释?servlet在web套接字的情况下是不重要的吗
- 如果我用上面的注释和其他注释(如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客户端。请参阅此处