Tomcat Web Socket работает на локальном хосте, но не работает на удаленном сервере с 404 - PullRequest
0 голосов
/ 17 января 2019

Я реализовывал Web Socket, используя JavaScript на клиенте и Java / Tomcat на сервере.Он работает очень хорошо на локальном хосте, но при развертывании на удаленном хосте происходит сбой.Проверяя консоль, я получаю ошибку 404 при запросе веб-сокета.Хорошо. Вот код:

JavaScript:

window.onload = init;
//var socket = new WebSocket("ws://localhost:8080/JevWebSocket/actions");
var socket = new WebSocket("ws://ctra.xyneex.com/JevWebSocket/actions");
socket.onmessage = onMessage;

function onMessage(event){
    var device = JSON.parse(event.data);
    if(device.action === "add"){
        printDeviceElement(device);
    }
    ...
    ...
}

Java:

package com.xyneex.websocket;

import com.xyneex.model.Device;
import static com.xyneex.model.Device.SESSION_HANDLER;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.json.JSONException;
import org.json.JSONObject;

@ServerEndpoint("/actions")
public class DeviceWebSocketServer
{
    @OnOpen
    public void open(Session session)
    {
        try
        {
            SESSION_HANDLER.addSession(session);
        }
        catch(JSONException ex)
        {
            Logger.getLogger(DeviceWebSocketServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @OnClose
    public void close(Session session)
    {
        SESSION_HANDLER.removeSession(session);
    }

    @OnError
    public void onError(Throwable error)
    {
        Logger.getLogger(DeviceWebSocketServer.class.getName()).log(Level.SEVERE, null, error);
    }

    @OnMessage
    public void handleMessage(String message, Session session)
    {
        try
        {
            JSONObject jsonMessage = new JSONObject(message);
            ...
            ...
        }
        catch(JSONException ex)
        {
            Logger.getLogger(DeviceWebSocketServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Из консоли браузера, когдаЯ загружаю страницу, которая выполняет клиент веб-сокета на локальном хосте, я получаю это:

console of localhost

Но когда я загружаю ту же страницу, размещенную на моем удаленном сервере,Я получаю это:

console of remote server

Tomcat 8.0.28 на локальном хосте, Tomcat 8.0.12 на моем удаленном сервере.

Пожалуйста, что можнобыть проблемой?

...