Я пытаюсь запустить приложение WebSockets на моем малине PI. Я загрузил и распаковал Tomcat 7.0.67. Тогда я начал Tomcat-Manager и развернуть мой "wsock.jar", который содержит только один файл:Tomcat 7: обновление WebSocket не работает
// ChatServer.java
package wsock;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")
public class ChatServer {
@OnOpen
public void onOpen(Session session) {
System.err.println("Opened session: " + session.getId());
}
@OnClose
public void onClose(Session session) {
System.err.println("Closed session: " + session.getId());
}
@OnMessage
public String onMessage(String message) {
System.err.println("Message received: " + message);
return "{ \"message\": \"Hello World\" }";
}
}
При развертывании на моем локальном сервере Tomcat 7 (в настоящее время на Windows 10) он работает:
ws = new WebSocket('ws://localhost:8080/wsock/chat');
WebSocket { url: "ws://localhost:8080/wsock/chat", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null, onclose: null, extensions: "", protocol: "", onmessage: null, binaryType: "blob" }
При развертывании на моем Raspberry PI:
ws = new WebSocket('ws://raspberrypi:8080/wsock/chat');
WebSocket { url: "ws://raspberrypi:8080/wsock/chat", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null, onclose: null, extensions: "", protocol: "", onmessage: null, binaryType: "blob" }
Firefox can't establish a connection to the server at ws://raspberrypi:8080/wsock/chat.
запрос, который был отправить это:
Host: raspberrypi:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Sec-WebSocket-Version: 13
Origin: http://raspberrypi:8080
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: 0a80/+qiZ3mJ03bDgSV5kg==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Но ответ не содержит обновление:
Content-Language: en
Content-Length: 971
Content-Type: text/html;charset=utf-8
Date: Fri, 01 Jan 2016 11:42:35 GMT
Server: Apache-Coyote/1.1
Интересно то, что при подключении к примерам WebSocket Chat (поставляется с сервером Tomcat) он работает:
ws = new WebSocket('ws://raspberrypi:8080/examples/websocket/chat');
WebSocket { url: "ws://raspberrypi:8080/examples/webs…", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null, onclose: null, extensions: "", protocol: "", onmessage: null, binaryType: "blob" }
Итак, что здесь не так? Что мне не хватает? Что я могу сделать для решения этой проблемы?