【问题标题】:Websocket handshake. From ws to wssWebsocket 握手。从 ws 到 wss
【发布时间】:2016-05-17 05:07:14
【问题描述】:

我正在开发一个应用程序一段时间,最近我在应用程序上附加了一个 SSL 证书(它不是自签名的;它是由 Comodo 签名的,所以问题不会从这里发生)。我很久以前在我的 Java Glassfish 服务器上实现了一个 WebSocket 端点,并且我正在将它与 javascript 一起使用。直到现在,当我转移到 https 时,我一直通过 http 成功使用 WebSocket。

让我们看看我使用的代码sn-ps:

服务器端点:

@ServerEndpoint(value = "/ws/chat", 
    encoders = ChatMessageEncoder.class, 
    decoders = ChatMessageDecoder.class)
public class ChatEndpoint {

@OnOpen
public void open(final Session session) {
    // stuff happenin'
}

@OnMessage
public void onMessage(final Session session) {
    // stuff happenin'    }

@OnError
public void onError(Throwable t) {
    t.printStackTrace();
    System.out.println("error");
}

@OnClose
public void onClose() {
}
}

客户端连接:

var wsocketPrivate;
function connectToChatserver() {
    var serviceLocation = 'wss://<ip>:8080/ws/chat';
    $rootScope.wsocketPrivate = new WebSocket(serviceLocation);
    $rootScope.wsocketPrivate.onmessage = onMessageReceived;
};
function onMessageReceived(evt) {
    console.log(evt)
};
connectToChatserver();

没有激活 ssl 证书并使用 var serviceLocation = 'ws://&lt;ip&gt;:8080/ws/chat';(ws 而不是 wss)可以正常工作。当我移动到 https 时,它要求 wss(浏览器阻止了我的 ws 握手,因为它不安全)并移动到 wss,出现以下错误:

WebSocket connection to 'wss://<ip>:8080/ws/chat' failed: Error in connection establishment: net::ERR_TIMED_OUT

我做错了什么?你能建议一些测试来了解更多信息吗?

谢谢, 米海

【问题讨论】:

  • 你解决了吗??我也有点卡在这了
  • 是的,检查答案。

标签: javascript java ssl https websocket


【解决方案1】:

我终于找到了问题所在。我使用 nginx 前端服务器作为代理。由于某种奇怪的原因,该服务器的默认配置阻止了我的 wss。

【讨论】:

  • 我也遇到了同样的问题,请问您在 nginx-server 配置文件中添加了哪些附加配置
  • 如果我可以让 Tyrus 以编程方式执行 SSL,我可以预见我也会遇到这个问题。配置有什么变化?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 2020-03-02
  • 2015-02-05
  • 2017-02-12
相关资源
最近更新 更多