Firefox 无法建立 websocket 连接,而 Chrome 可以

2024-01-02

我正在开发一个网络应用程序,并且包括网络套接字连接。我已经安装了带有 websocket (https://www.npmjs.com/package/websocket https://www.npmjs.com/package/websocket).

在 Chrome 中,它工作得很好,但在 Firefox 中,此消息出现在控制台中:

Firefox no puede establecer una conexión con el servidor en wss://www.my-dev-server.com:1337/.

(Firefox 无法与服务器建立连接...)

这是服务器代码(基本上如示例中所示):

var WebSocketServer = require('websocket').server;

var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('/keyfile.key'),
  cert: fs.readFileSync('/pemfile.pem')
};
var port = 1337; 

// Create HTTPS service.
var server = https.createServer(options, function(request, response) {
    console.log((new Date()) + ' Received request for ' + request.url);
    response.writeHead(404);
    response.end();
});     

server.listen(port, function() {
    console.log((new Date()) + ' Server is listening on port ' + port);
});

// create the server
wsServer = new WebSocketServer({
    httpServer: server,
    autoAcceptConnections: false
});

function originIsAllowed( origin ) {
    // TODO: complete
    return true;
}

var clients = [];

// WebSocket server
wsServer.on('request', function(request) {

    if( !originIsAllowed( request.origin ) ) {
        request.reject();
        console.log((new Date()) + ' Connection from origin ' + request.origin + 'rejected.');
        return;
    }
    console.log((new Date()) + ' Connection accepted from ' + request.origin + '.');

    var connection = request.accept(null, request.origin);
    clients.push(connection);

    connection.on('message', function( message ) {
        if (message.type === 'utf8') {
            console.log('Received Message: ' + message.utf8Data);
        }
        else if( message.type === 'binary' ) {

        }
    });

    connection.on( 'error', function( error ) {
    });

    connection.on('close', function( reasonCode, description ) {
        console.log((new Date()) + " Peer " + connection.remoteAddress + " disconnected.");
    });
});

我使用自签名证书进行开发,与 Web 服务器使用的证书相同。

这是我的客户端代码:

var connection = new WebSocket('wss://www.my-dev-server.com:1337');

connection.onopen = function () { };

connection.onerror = function (error) { };

connection.onmessage = function (message) {
    /* some code here */
};

我终于找到了解决方案。

问题是,对于 https 连接,在端口 443 中,Firefox 已经存储了未知证书的异常,而它需要 wss 的另一个异常(在本例中为端口 1337)。

我已在高级首选项中为此端口添加了证书例外,现在工作正常。

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

Firefox 无法建立 websocket 连接,而 Chrome 可以 的相关文章

  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 快速修复:如何在 Python 中使用 SSL

    对不起我的英语不好 我在连接用 python 开发的客户端 quckfix 时遇到问题 配置文件没有像我想要的那样响应 如果我将路径 不正确的路径 强制错误 更改为文件 pem 并重新启动应用程序 该应用程序什么也不做 只是保持正常运行 就
  • 如何使用 jQuery 禁用 Firefox 对所有图像的默认拖放行为?

    Firefox 有一个恼人的行为 它默认允许用户拖放任何图像元素 如何使用 jQuery 彻底禁用此默认行为 以下将在 Firefox 3 及更高版本中执行此操作 document on dragstart function return
  • Node.js 如何读取一个文件,然后使用两个单独的函数写入同一个文件?

    我想要做的是读取文件 然后在写入文件时能够使用该信息执行其他操作 例如 读取文件 写入文件并同时执行MD5哈希 数字签名等 我可以使用 fs readfile 和 fs writefile 作为一项操作 只需将文件从 Web 服务器复制到我
  • 如何在mozilla firefox上获得线性渐变效果

    我正在使用下面的CSS来获得线性渐变效果 但它在mozilla firefox中不起作用 你们中的任何人都知道它吗 请帮助在firefox中也获得相同的效果 CSS 是 background image webkit linear grad
  • engine.io 与 socket.io 有何不同?

    LearnBoost 似乎有一个新项目叫做引擎 io https github com LearnBoost engine io理论上似乎与socket io 类似 1 在什么情况下您会使用其中一种而不是另一种 2 对于需要通过node j
  • 如何使用 Jade 迭代数组创建 html 表

    我从 Node ExpressJS 框架开始 遇到了这个我无法解决的问题 我正在尝试显示一个包含一些博客文章的表格 是的 一个博客 但我没有完成 这是 Jade 模板代码 div table thead tr th Posts tbody
  • 为 MongoDB 中的对象数组建立索引

    我有一个巨大的电子邮件转储 我正在尝试在 MongoDB 中存储和查询它 有 160 万封电子邮件 每封电子邮件都存储为节点模块 https github com andris9 mailparser它将原始电子邮件解析为漂亮的 Javas
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • npm WARN 已弃用 [email protected]:改用 uuid 模块

    当我尝试时 npm install g cordova latest总是得到npm 警告已弃用 电子邮件受保护 cdn cgi l email protection 使用 uuid 模块代替 mac 操作系统塞拉利昂 10 12npm v
  • Strongloop 环回 如何使用路由进行静态服务?

    我想做类似的事情 server js app use client loopback static dirname client using middleware json 但该示例仅适用于根 files loopback static p
  • 使用mockery和sinon模拟类方法

    我正在学习使用带有 sinon 的节点模块模拟进行单元测试 仅使用模拟和普通类 我就可以成功注入模拟 不过 我想注入一个 sinon 存根而不是一个普通的类 但我在这方面遇到了很多麻烦 我试图嘲笑的班级 function LdapAuth
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • WebSocket 的“onopen()”函数内的对象方法调用给出“函数未定义”

    我正在尝试编写一个基于 JavaScript 的 ChatClient 并希望在 onopen 或 onmessage 函数 如 this some 中调用一些其他对象方法 怎么了 var ChatClient function this
  • AWS Lambda 上的 NodeJS 集群

    是否可以在 lambda 函数中使用 cluster 模块 我试过这个 use strict var cluster require cluster var http require http var os require os var n
  • Node.js 中的 webRTC

    我想在node js 中使用webRTC 来管理涉及浏览器和nodejs 上的对等点的混合连接 我做了一些测试和搜索 我尝试使用wrtc https github com js platform node webrtc or webrtc
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • browserify 错误 /usr/bin/env: 节点: 没有这样的文件或目录

    我通过 apt get install 安装了 node js 和 npm 以及所有依赖项 然后安装了 browserify npm install browserify g 它完成了整个过程 看起来安装正确 但是当我尝试为此做一个简单的捆
  • 如何在浏览器同步中配置端口

    我有一个gulp任务运行于browser sync 默认情况下它运行在node js服务器的端口3000上 我想将默认端口更改为任何其他端口 例如3010 var gulp require gulp connect require gulp

随机推荐