【问题标题】:Openshift Online 3 with WebSockets. What is the correct "ws"?带有 WebSockets 的 Openshift Online 3。什么是正确的“ws”?
【发布时间】:2018-03-16 06:22:43
【问题描述】:

问题是从 Openshift 2 迁移到 Openshift 3 后,我无法获得 WebSockets 通信。 Here is the same question but it doesn't work for me.

我有:

WebSocket 握手期间出错:意外响应代码:404

刷新同一页面后:

WebSocket 握手期间出错:意外响应代码:503

这是我的代码

var wsUri ="ws://" + document.location.host + "/scada1WebSockEndpoint"
var websocket = new WebSocket(wsUri);

它适用于我的本地 Apache,但不适用于 Openshift 平台。对我来说,看起来 websocket 根本不起作用,或者 wsUri 不正确。 有什么想法吗?

【问题讨论】:

  • 您尝试从 OpenShift 外部连接到哪个端口号?在 V2 中,您必须使用单独的端口。在 V3 中,它是普通端口 80/443,具体取决于使用的是不安全连接还是安全连接。
  • 我应该在哪里指出端口号?在 V2 中我做了 var wsUri = "wss://canconnectweb-sergeylotvin.rhcloud.com:8443/scada1WebSockEndpoint"; 在 V3 中这个选项不起作用 - var wsUri ="ws://" + document.location.host + ":80/scada1WebSockEndpoint" 我尝试了 8080 和 443 和 8443。没有任何帮助。
  • 不包括:8443。使用与您为应用程序创建的路由对应的主机名,并将其暴露在集群之外。使用 oc get routes 找出答案,或查看 Web 控制台概述页面。
  • 嗯,就像在我的开始消息中一样。我试过var wsUri ="ws://" + document.location.host + "/scada1WebSockEndpoint" Ports 这里没有提到。 document.location.host - 更改为真实的应用程序名称(与公开的路线完全相同)。 scada1WebSockEndpoint - 这只是端点的名称。
  • 您还可以使用端口转发将端口 8080 暴露给您的本地计算机并绕过 haproxy 以验证 haproxy 没有导致问题。

标签: java websocket openshift tomcat8


【解决方案1】:

好吧,不能说问题解决了,但我至少强迫它工作。我刚刚更改了 Openshit Online 3 中的服务器类型。从 Red Hat JBoss Web Server 3.0 Tomcat 8Red Hat JBoss Web Server 3.0 Tomcat 7。 所以它现在适用于云上的 Red Hat JBoss Web Server 3.0 Tomcat 7 和本地 PC 上的 Tomcat 8。这意味着问题连接到 Tomcat 8。但它可能在哪里?任何想法将不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多