2016-01-01 2 views
0

Я пытаюсь запустить приложение 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" } 

Итак, что здесь не так? Что мне не хватает? Что я могу сделать для решения этой проблемы?

ответ

1

Я нашел ответ после чтения файлов конфигурации и тестирования на разных машинах. Это была версия Java. Моя малина PI запускает Raspbian Linux, основанный на Debian. На моей машине Debian и малины это не сработало. На моей машине Windows и Ubuntu, в которой работают Java 8, она работала. В Debian и Raspbian есть Java 7. Мой проект был построен с поддержкой Java 8, что приводит к этой проблеме.

Я изменил версию Java в своем проекте Eclipse, и теперь он работает.

Смежные вопросы