2013-03-23 61 views
4

我試圖讓我自己的聊天客戶端使用websockets,並認爲我會開始與Tomcat 7 websocket chat example code.。我用Eclipse成功編譯並部署了ChatAnnotation類,但是當我將chat.html文件重定向到我認爲的端點應該是的時候,沒有任何反應。Tomcat7 Websocket聊天示例:如何加載Websocket服務器?

In the sample class,他們有一個@ServerEndpoint(value = "/websocket/chat")註釋,我不知道我需要做什麼(即在web.xml中)來獲取該類在服務器上加載並啓動該端點。

我已經在構造函數中放置斷點,以查看它是否在部署時得到創建,而不是。

回答

0

在web.xml中不需要任何特殊的配置。你在本地運行在正確版本的Tomcat上嗎?此註釋僅適用於Tomcat 7.0.47。另外,如果你使用的是Maven,這是我使用的依賴關係 - 它指定了websocket-api,以便代碼可以編譯,但是假定必需的lib將由運行時環境提供。你會發現的WebSocket-api.jar文件中& tomcat7-websocket.jar的tomcat-7.0.47/lib目錄

<dependency> 
     <groupId>javax.websocket</groupId> 
     <artifactId>javax.websocket-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
4

這裏是 「小魔術」:

必須具有的實現在classpath接口ServerApplicationConfig

應用程序可以提供這種接口的實現,以過濾部署在發現的WebSocket端點。通過ServletContainerInitializer掃描將發現此類的實現

如果使用Tomcat的樣品,一類{CATALINA_BASE}\webapps\examples\WEB-INF\classes\websocket\ExamplesConfig.java存在(自帶編譯後的.class)


最後但並非最不重要的:比如Tomcat 發現的的東西,你不必須在您的WEB-INF/web.xml中註冊任何servlet。這個文件必須存在,但只需要很少的東西。

+0

我不認爲這是真的。就像你引用的一樣,「應用程序*可能*提供了這個接口的實現來過濾發現的WebSocket端點。」這聽起來並不像你必須擁有它,事實上,當我部署了相同的示例時,沒有它,它工作得很好。 – eis 2018-02-27 07:29:47