javascript - 使用 websockets 的 Web 应用程序 “Could not establish connection. Receiving end does not exist."

标签 javascript ubuntu tomcat websocket connection

Java 服务器、javascript 客户端、无特殊库、纯文本 HTTP/1.1 和 websocket 连接。
使用 JDK 16 和 Tomcat 版本 10.0.2 中的 websocket jar 编写的服务器端(在 Eclipse 中)。 (也尝试了其他 JDK 和 websocket jar 的许多排列。)
两个网络应用程序。 PC 上的 Tomcat 10.0.2,服务器上的 10.0.7。这两个应用程序都在 Windows 10 上运行。部署到 Ubuntu 20.04 服务器。两个程序都显示初始 HTTP 数据。一个程序获得 websocket 连接并运行,另一个程序无法获得 websocket 连接。两者都使用相同的代码来计算 websocket 连接的目标 URL:

window.onload = function() {
    var target = "ws://" + location.host + "/[context]/[endpoint]";
    console.log("target: " + target);
    try {
        if ('WebSocket' in window) {
            socket = new WebSocket(target);
        } else if ('MozWebSocket' in window) {
            socket = new MozWebSocket(target);
        } else {
            alert('WebSocket is not supported by this browser.');
            return;
        }
    } catch (e) {
        console.log("websocket connection exception: " + e.description);
    }
... 
只有 [context] 和 [endpoint] 不同。回想一下,这些 URL 可以在 PC 上运行。我相信它们是“格式良好的”/有效的。
失败的网络应用程序的结果:

Firefox:

uncaught exception: Could not establish connection. Receiving end does not exist.
GET ws://35.xxx.xx.xx:8080/Memory/MemoryEndpoint[HTTP/1.1 404 70ms]
Firefox can’t establish a connection to the server at ws://35.xxx.xx.xx:8080/Memory/MemoryEndpoint.



Chrome:

Error handling response: TypeError: Cannot read property 'encrypt' of undefined
at Object.13 (chrome-extension://bkdgflcldnnnapblkhphbgpggdiikppg/public/js/content-scripts/autofill.js:1427:33)
. . .
game.js:31 WebSocket connection to 'ws://xxx.xx.xx.xx:8080/Memory/MemoryEndpoint' failed:



关于“加密”未定义问题,Chrome 继续写了很多行。我不知道那是什么,但它可能非常相关。上面的最后一行暗示下一行可能会给出失败的某些原因,但它是空的。
两个浏览器都不会记录以“websocket 连接异常:”开头的预期异常文本。
Tomcat 日志文件都是干净的,除了 localhost__access_log 中的一些奇怪的条目,例如:209.90.225.218 - - [11/Jul/2021:00:43:33 +0000] "HEAD /robots.txt HTTP/1.0" 404 - 和其他人提到 /invoker/readonly, /login, /jenkins/login, /nifi/ .
两个程序都从 Tomcat 服务器返回结果的事实告诉我,端口等权限就足够了。我还研究了 netstat 结果等,查看了防火墙设置,阅读了许多文章并请求帮助。 (可能无关紧要,因为 Tomcat 确实返回了预期的 HTTP/1.1 数据。)不走运。
我需要这个程序才能工作。我会在 2021 年 7 月 16 日之前为解决此问题支付现金奖励,但我不知道如何谨慎协商。 :-(

最佳答案

问题解决了,虽然我不明白原因。回想一下:Web 应用程序在部署到 Tomcat 版本 10.0.2 的开发 PC 上运行良好,适用于各种 JDK、websocket 库(包括已安装在 VM 上的 Tomcat 10.0.7 中的一个)。该应用程序在 Ubuntu VM 上失败。有 friend 在VM中安装了Tomcat 10.0.8。快!网络套接字工作。

关于javascript - 使用 websockets 的 Web 应用程序 “Could not establish connection. Receiving end does not exist.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68333210/

相关文章:

java - Spring 启动: How to read external files reside in Tomcat when deployed as war

javascript - 如何动态显示折线图的图例?

javascript - 如何从json中获取数据

linux - 在Ubuntu Server 16.04的fstab中自动挂载VirtualBox共享文件夹

windows - Windows 上的 Bash - exe 文件的别名

gwt - 拦截客户端证书并将其转发到 web 服务

tomcat - IntelliJ IDEA - 地址本地主机 :1099 is already in use

javascript - javascript中两个日期之间的时间差?

javascript - 无法在 IE 中设置选项元素的属性

linux - 使用 Supervisor 在监督下运行流程