【问题标题】:Secure WebSocket (WSS) in Java server and client in javascriptJava 服务器中的安全 WebSocket (WSS) 和 javascript 中的客户端
【发布时间】:2017-09-20 01:39:21
【问题描述】:

WebSocketwss://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);
               };

【问题讨论】:

  • 您有任何授权问题吗? IE。你能访问https://...your domain.../..your context root.../server/ 吗?
  • 您是否正在实施 SSL 证书固定?

标签: sockets security web websocket


【解决方案1】:

Web Socket 服务器默认以 ws(unsecured like HTTP) 开头。如果您需要 SSL (WSS),则必须在您的服务器对象中明确设置。

如果您在客户端中使用以下 URL,它应该可以工作。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多