WebSocket 连接建立时出错:net::ERR_CONNECTION_CLOSED

2024-04-11

当我尝试建立一个wss与我的服务器的连接:

与“wss://mydomain:3000/”的 WebSocket 连接失败:错误 连接建立:net::ERR_CONNECTION_CLOSED

我目前有一个 apache2 虚拟主机配置设置来侦听端口 443 和 80 上的请求:

<VirtualHost *:80>
        ServerName otherdomainname.co.uk
        ServerAlias www.otherdomainname.co.uk

        RewriteEngine On
        RewriteRule ^/(.*)$ /app/$1 [l,PT]

        JkMount /* worker2

</VirtualHost>

<VirtualHost _default_:443>
        ServerName otherdomainname.co.uk
        ServerAlias www.otherdomainname.co.uk

        RewriteEngine On
        RewriteRule ^/(.*)$ /app/$1 [l,PT]

        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

        <Location />
        SSLRequireSSL On
        SSLVerifyClient optional
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars +StrictRequire
        </Location>

        JkMount /* worker2

</VirtualHost>

正如您所看到的,它使用 JkMount 将请求传递给 Tomcat,Tomcat 在 HTTP 和 HTTPS 上都能正确地提供网页。

当我在端口 80 上使用 HTTP 协议访问该站点时,可以使用以下命令建立 WebSocket 连接:ws协议。

当我在端口 443 上使用 HTTPS 协议访问该站点时,该站点服务正常,但未使用以下命令建立 WebSocket 连接wss.

我使用“ws”node.js 模块来提供 WebSocket 服务器:

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({ port: 3000 }),
  fs = require('fs');

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);

    ws.send(message);
  ws.send('something');
});

为什么我无法使用以下命令成功连接到 WebSocket 服务器wss协议结束https?


问题是我没有为 https/wss 配置 WebSocket 服务器。

这是我的不安全 WebSocket 服务器的安全版本,使用来自 node.js 的“ws”。

var WebSocketServer = require('ws').Server,
  fs = require('fs');


var cfg = {
        ssl: true,
        port: 3000,
        ssl_key: '/path/to/apache.key',
        ssl_cert: '/path/to/apache.crt'
    };

var httpServ = ( cfg.ssl ) ? require('https') : require('http');

var app      = null;

var processRequest = function( req, res ) {

    res.writeHead(200);
    res.end("All glory to WebSockets!\n");
};

if ( cfg.ssl ) {

    app = httpServ.createServer({

        // providing server with  SSL key/cert
        key: fs.readFileSync( cfg.ssl_key ),
        cert: fs.readFileSync( cfg.ssl_cert )

    }, processRequest ).listen( cfg.port );

} else {

    app = httpServ.createServer( processRequest ).listen( cfg.port );
}

var wss = new WebSocketServer( { server: app } );

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);

    ws.send(message);

  });

  ws.send('something');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebSocket 连接建立时出错:net::ERR_CONNECTION_CLOSED 的相关文章

  • Node.js 有水豚吗?

    有谁知道 Node js 是否有类似 capybara 的东西 怎么样Zombie http zombie labnotes org 僵尸 js 使用 Node js 进行极其快速的无头全栈测试 The Bite 如果你要编写一个速度极快的
  • 以html格式显示npm审计漏洞

    有没有办法将 npm 审计报告显示为 html 页面 目前我只能看到使用以下命令以 json 格式输出报告的选项 npm audit json 我写了一个NPM包 https www npmjs com package npm audit
  • 具有独立 Node.js 服务器的虚拟主机

    目前有没有一种方法可以使用node js服务器进行虚拟托管 即在一个IP下托管多个域 当然 你可以使用bouncy https github com substack bouncy or 节点 http 代理 https github co
  • 如何在控制台上打印来自post请求的数据

    我正在尝试在控制台上打印发布数据 app js var express require express http require http var app express app set port process env PORT 7002
  • Redis 客户端忽略其上设置的配置选项并尝试连接到默认 IP 127.0.01

    在AWS中 我使用ElastiCache Redis服务器并使用节点作为后端和 promise redis 包 这就是我尝试连接到我的 redis 服务器端点的方法 client redis createClient host my red
  • 如何在 PyV8 中加载 Nodejs 模块?

    如何在 PyV8 中加载 Nodejs 模块 我读过所有关于 jsdom 在与 Nodejs 一起运行时有多么出色的内容 如果我在 Python 应用程序中运行 v8 使用 python 获取 Web 资源 然后将生成的 html 字符串提
  • 如何使用 Stripe 在一次操作中创建客户和卡片?

    我正在尝试第一次初始化客户 我有一个表格 他们可以在那里注册和填写所有内容 然后他们提交 在客户端上 会发生以下情况 var cardValues AutoForm getFormValues credit card form insert
  • PHP SNMP - 找不到模块

    我已启用 SNMP 模块并尝试使用该模块中的功能 我已将 MIBDIRS 环境变量设置为我的 mib 所在的位置 但我仍然收到这些 找不到模块 警告 Cannot find module IP MIB At line 0 in none C
  • Nodejs - 处理和发送多部分请求,

    我的应用程序在 Nodejs 服务器上运行 Node Js 还充当来自应用程序的请求的中间件 代理 因此 从浏览器开始 所有 REST 调用都会转到 NodeJs 然后转到 Java API 我发现处理多部分表单数据的请求时出现问题 我在
  • 为什么index.html优先于index.php?

    我在服务器上有一个网站 主页是 example com index php 好的 我将一个名为 index html 的文件上传到服务器 根目录 当我在浏览器的 URL 栏中输入站点的域时 我感到惊讶 因为 index html 页面已加载
  • 如何在 apache 上为锚点 cms 重写指令

    我使用的是一个名为anchor的cms http anchorcms com docs getting started configuration http anchorcms com docs getting started config
  • 有人在node/socket.io 中成功实现了动态命名空间吗?

    含义 用户对应用程序进行身份验证 gt 应用程序设置socket io连接的命名空间 http www socketioserver com NAMESPACE 并且节点服务器相应地响应无需针对特定名称空间进行硬编码 到那个特定的命名空间
  • 使用 VirtualDocumentRoot 的 SSL 虚拟主机

    我在 ubuntu 16 04 VM 上进行开发工作 当我处理多个项目时 为了让我的生活更轻松 我使用 VirtualDocumentRoot 和主机文件使用 dev 域从我的主文件夹中服务器站点 在 000 default conf 我有
  • express 或express-generator:我需要两者吗?

    只是探索 Node js 并遇到了 Express 在 npm 存储库站点上https www npmjs com package express https www npmjs com package express它明确指出安装是 np
  • 如何将 Gulp 添加到我的项目中?

    我正在使用 Windows 7 Visual Studio 2013 我正在尝试在我的客户项目中设置 Gulp 我已将这些 Nuget 添加到项目中 Node js 版本 0 12 0 Npm js 版本 1 3 15 10 由于某种原因我
  • 如何销毁角度工厂实例

    一方面 我有几个工厂 每个工厂都控制一个 websocket 另一方面 其中一个工厂应该在客户端登录时启动 因此 if user isLogged injector get NotificationsWebsocket 这就是我动态初始化工
  • 获取对象数组中每个嵌套对象的虚拟属性?

    所以我知道如何获取单个虚拟属性 如 Mongoose 文档中所述 PersonSchema virtual name full get function return this name first this name last 但如果我的
  • 如何在 Google Translate Node.js 代码中设置 API KEY

    我正在尝试创建一个使用 Google Translate API 的 Node js 代码 我从以下代码中得到了谷歌文档 https cloud google com translate docs translating text 但是当我
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor

随机推荐

  • SASS 3.2 媒体查询和 Internet Explorer 支持

    我最近实施了这项技术 http thesassway com intermediate responsive web design in sass using media queries in sass 32与SASS 3 2一起使用 co
  • py2app setup.py使用问题

    好的 我正在尝试使用 py2app 为我的项目生成发行版 我仍然不确定我是否掌握了它的窍门 所以我的 setup py 看起来像这样 This is a setup py script generated by py2applet Usag
  • 使用 Kafka Streams 进行 OpenTracing - 如何?

    我正在尝试将 Jaeger 跟踪集成到 K Streams 中 我计划将跟踪添加到几个最重要的管道中 并且想知道将 Traceid 从一个管道传递到另一个管道的好方法是什么 这是我到目前为止所做的 在流处理管道开始时 我启动一个服务器范围并
  • AudioKit - 临时文件太大

    我正在使用 AudioKit 的 AKNodeRecorder 来录制音频 录制音频时 它会在临时目录中生成 CAF 文件 如果我们使用 exportAsynchronously 保存它 它会在文档目录中创建一个扩展名为 m4a 的新文件
  • H2“runscript”命令将所有表名变成大写

    我有一个 sql 脚本 它只是模式定义 该脚本是 mysql 哑巴的修改版本 去掉 h2 不喜欢的坏字符 脚本运行并将架构插入到 h2 数据库中 但问题是所有数据库名称均为大写 xyz 转换为 XYZ 我需要它们保持小写 因为我的应用程序正
  • android中C++与Java的通信

    我想在 Android 的本机代码中从 C 文件调用 java 方法 我知道 我们可以从 JNI 实现这一点 但在这种情况下 我需要从 Java 发起调用 这不符合我的要求 我需要从 C 中的 main 函数调用用 Java 编写的方法 那
  • Android:Kotlin:自定义 webView - 无法作为函数调用。找不到函数“invoke()”

    我有一项活动 联系活动 kt 仅包含一个 webView 组件 使用 Kotlin 编写活动 我想用我的自定义 webView 替换 webView ObservableWebView java 所以这里的代码 我的活动 kt class
  • 在裸机上使用 Kubernetes 1.6 安装插件的说明?

    我按照此文档从头开始设置了我的 kubernetes 集群 https kubernetes io docs getting started guides scratch https kubernetes io docs getting s
  • 在 Foundation 中动态设置 Sass 变量

    如何在 Foundation 中动态设置 Sass 变量 根据他们的文档 http foundation zurb com docs components tables html 您可以借助一些 Sass 变量来自定义表格 settings
  • PHP MySQL 数据库奇怪字符

    我正在尝试输出存储在 MySQL 数据库中的产品信息 但它写出了一些奇怪的字符 例如内部带有问号的菱形 我认为这可能是编码 UTF8问题 但我已经指定了我想要的编码 这是正确的吗 我应该检查什么 如果只有来自数据库的数据包含奇怪的字符 请使
  • 如何使 TinyMCE 在 UpdatePanel 中工作?

    我正在尝试做许多人似乎能够做到的事情 但我无法实施任何解决方案 这TinyMCE http tinymce moxiecode com 控件在 asp net 表单中工作得很好 直到您用 UpdatePanel 将其括起来 然后在回发后中断
  • 在 SceneKit 游戏中为 SCNNode 制作 SCNConstraint (LookAt) 动画以使过渡逐渐进行

    一般来说 当你想让游戏中的角色面对镜头时 可以使用 SCNLookAtConstraint 这实际上也对我很有帮助 Below 我的对象是我试图根据约束定向的节点 Enemy 指的是场景中的某个节点 pointOfView 是场景的视角 当
  • eclipse 找不到 android.support.v4.widget.SwipeRefreshLayout

    即使点击添加支持库并选择版本19后 eclipse仍然找不到android support v4 widget SwipeRefreshLayout 有谁知道如何让它发挥作用 我在用
  • 无法在 AWS Opsworks 上使用 Chef 12 找到 Chef 社区食谱

    问题 在 AWS OpsWorks 上运行自定义说明书时setup failed状态针对实例显示 并且故障日志中显示以下内容 2016 03 26T22 53 48 00 00 INFO Started chef zero at chefz
  • numpy 中的索引(与 max/argmax 相关)

    假设我有一个 N 维 numpy 数组x和一个 N 1 维索引数组m 例如 m x argmax axis 1 我想构造 N 1 维数组y这样y i 1 i N 1 x i 1 i N 1 m i 1 i N 1 为了argmax上面的例子
  • 具有高质量代码的开源 Objective-C 项目?

    我认为学习新编程语言的最佳方法之一是深入研究源代码并了解经验丰富的程序员如何编写 我在 Stack Overflow 上发现了针对其他语言的此类问题 但没有针对 Objective C 的问题 我发现的最接近的是这个关于好看的 Cocoa
  • 如何在Delphi中调试由另一个.exe启动的.exe

    我想调试App2 exe 它是由App1 exe启动的 如果 App2 exe 是一个 dll 我可以指定一个主机应用程序 但这似乎不适用于 exe 我现在使用 附加到进程 但如果 App2 exe 在我执行此操作之前崩溃 则这是无用的 有
  • 为什么无符号变量没有被更频繁地使用? [复制]

    这个问题在这里已经有答案了 似乎无符号整数对于方法参数和永远不应该为负数的类成员很有用 但我没有看到很多人以这种方式编写代码 我自己尝试了一下 发现需要从 int 转换为 uint 有点烦人 无论如何 你对此有何想法 复制 为什么数组长度是
  • 如何在 C# 中执行 cmd,然后在同一窗口中执行后面的另一个命令?

    我想要完成的是一个基本上一键设置活动分区的程序 节省了使用 cmd 提示符等的时间和技巧 我已经研究了 System Management 名称空间 但无法弄清楚如何使用它 所以我求助于使用 CMD 我有一个用 C 编写的模块应用程序 基本
  • WebSocket 连接建立时出错:net::ERR_CONNECTION_CLOSED

    当我尝试建立一个wss与我的服务器的连接 与 wss mydomain 3000 的 WebSocket 连接失败 错误 连接建立 net ERR CONNECTION CLOSED 我目前有一个 apache2 虚拟主机配置设置来侦听端口