使用javascript在Java服务器和客户端中保护WebSocket(WSS)

时间:2017-04-23 10:36:10

标签: sockets security web websocket

WebSocket wss://localhost:8025/websockets/server的连接失败: WebSocket 打开握手超时

请帮助我做错了!

服务器端代码:

启动服务器

Server server = new Server("localhost", 8025, "/websockets", WebSocketServerEndpoint.class);
server.start();

@ServerEndpoint(value = "/server")
public class WebSocketServerEndpoint {
    @OnOpen
    public void onOpen(Session session) throws Exception 
    {
        Logger.write("communication_clientservice", "WebSocket >> Connected ... " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException 
    {
        Logger.write("communication_clientservice_websocket", "UI to Websocket >> command received at Websocket >> " + message);
    }

    @OnClose
    public void onClose(Session session, CloseReason closeReason) throws IOException 
    {
        Logger.write("communication_clientservice_websocket", "WebSocket >>"+ String.format("Session %s closed because of %s", session.getId(), closeReason));   
        session.close();
    }
}

客户方 客户端连接服务器

 var ws = new WebSocket("wss://localhost:8025/websockets/server");             
               ws.maxTimeout = 5 * 1000;
               ws.onopen = function()
               {
                  // Web Socket is connected, send data using send()
                  ws.send("{\"from\":\"shabeer\"}");
                  //alert("Message is sent...");
                  var elem = document.getElementById("receivedmsg");
                  elem.innerHTML = "panic request send";
               };

               ws.onmessage = function (evt) 
               { 
                  var received_msg = evt;
                  //alert("Message is received..." + received_msg);
                  var elem = document.getElementById("receivedmsg");
                  elem.innerHTML = "Response received : " + received_msg;
               };

               ws.onclose = function()
               { 
                  // websocket is closed.
                  ///alert("Connection is closed..."); 
                  setTimeout(function(){WebSocketTest()}, 5000);
               };

1 个答案:

答案 0 :(得分:0)

默认情况下,Web Socket服务器以ws(不受HTTP保护)启动。如果您需要SSL(WSS),则必须在服务器对象中明确设置它。

如果您在客户端使用以下网址,则该网址应该有效。

wss://localhost:8025/ to ws://localhost:8025/