我当时在客户端上使用JavaScript并在服务器上使用Java / Tomcat来实现Web套接字。它在localhost上可以很好地工作,但是当我在远程主机上部署它失败。检查控制台,我在Web套接字请求上收到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);
}
}
}
从浏览器控制台中,当我在本地主机上加载执行Web套接字客户端的页面时,会得到以下信息:
但是当我加载远程服务器上托管的同一页面时,我得到了:
本地主机上的Tomcat 8.0.28, 我的远程服务器上的Tomcat 8.0.12。
请问可能是什么问题?