我正在尝试使用websockets创建自己的聊天客户端,并认为我会从Tomcat 7 websocket chat example code.开始。我已经使用Eclipse成功编译和部署了ChatAnnotation
类,但是当我将chat.html文件重定向到我认为端点应该是什么时,没有任何反应。
In the sample class,他们有@ServerEndpoint(value = "/websocket/chat")
注释,我不确定我需要做什么(即在web.xml中)才能让该类在服务器启动时加载并具有该功能端点限制。
我在构造函数中放置了断点,看看它是否在部署时被创建,而不是。
答案 0 :(得分:4)
这是"小魔术":
必须在类路径中实现接口ServerApplicationConfig
:
应用程序可以提供此接口的实现,以过滤已部署的已发现的WebSocket端点。将通过ServletContainerInitializer扫描发现此类的实现。
如果您使用Tomcat示例,{CATALINA_BASE}\webapps\examples\WEB-INF\classes\websocket\ExamplesConfig.java
中存在一个类(随编译的.class一起提供)
最后但并非最不重要的是,因为Tomcat 发现事情,您不必在WEB-INF/web.xml
中注册任何servlet。这个文件必须存在,但只需要很少的东西。
答案 1 :(得分:0)
在web.xml中不需要任何特殊配置。您是否在本地正确版本的Tomcat上运行它?此注释仅适用于Tomcat 7.0.47。此外,如果您正在使用Maven,这是我使用的依赖项 - 它指定了websocket-api,因此代码将编译,但假设运行时环境将提供必要的lib。你会发现websocket-api.jar& tomcat-7.0.47 / lib中的tomcat7-websocket.jar
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>