4

我正在尝试使用 websockets 制作自己的聊天客户端,并认为我将从Tomcat 7 websocket 聊天示例代码开始。. 我已经ChatAnnotation使用 Eclipse 成功编译和部署了该类,但是当我将 chat.html 文件重定向到我认为应该是端点时,什么也没有发生。

在示例类中,它们有一个@ServerEndpoint(value = "/websocket/chat")注释,我不确定我需要做什么(即在 web.xml 中)以使该类在服务器启动时加载并绑定该端点。

我已经在构造函数中放置了断点,以查看它是否在我部署时被创建,而事实并非如此。

4

2 回答 2

4

这是“小魔法”:

您的类路径中必须有接口的实现ServerApplicationConfig

应用程序可以提供此接口的实现来过滤已部署的已发现 WebSocket 端点。此类的实现通过 ServletContainerInitializer 扫描发现。

如果您使用 Tomcat 示例,则存在一个类{CATALINA_BASE}\webapps\examples\WEB-INF\classes\websocket\ExamplesConfig.java(带有已编译的 .class)


最后但同样重要的是:当 Tomcat发现事物时,您不必在WEB-INF/web.xml. 该文件必须存在,但内容最少。

于 2014-11-27T08:09:54.807 回答
0

您不需要 web.xml 中的任何特殊配置。您是否在本地正确版本的 Tomcat 上运行它?此注解仅适用于 Tomcat 7.0.47。此外,如果您使用的是 Maven,这是我使用的依赖项 - 它指定了 websocket-api,因此代码可以编译,但假设运行时环境会提供必要的库。你会在 tomcat-7.0.47/lib 中找到 websocket-api.jar 和 tomcat7-websocket.jar

    <dependency>
        <groupId>javax.websocket</groupId>
        <artifactId>javax.websocket-api</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
    </dependency>
于 2013-12-03T20:10:05.713 回答