【问题标题】:socket.io failed-WebSocket is closed before the connection is establishedsocket.io failed - WebSocket 在连接建立之前关闭
【发布时间】:2021-03-19 17:32:40
【问题描述】:

我正在使用节点 js 应用程序

它在 80 端口上工作我想把它转移到 8070

服务器端

server.js

var compression = require('compression');
var _       = require('lodash');
var express = require('express');
var server  = express();
var app     = require('http').createServer(server);
var io      = module.exports.io = require('socket.io')(app);
server.use(compression());
app.listen(8070, function(){
    console.log('listening on *:' + 8070);
});

客户端

<script>
var socket = io.connect('wss://myweb.io:8070/', { transports: ["websocket"] ,secure : true});            
socket.on('connect', function(data) {alert(data);});
</script>

正在工作的客户端

<script>
var socket = io.connect('wss://myweb.io/');              
socket.on('connect', function(data) {alert(data);});
</script>

允许来自防火墙的输入/输出

sudo iptables -A INPUT -p tcp --dport 8070 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8070 -m conntrack --ctstate ESTABLISHED -j ACCEPT

收到此错误

socket.io.js:8 WebSocket connection to 'wss://myweb.io:8070/socket.io/?EIO=3&transport=websocket' failed: WebSocket is closed before the connection is established.

将 wss 更改为 HTTP 时会出现此错误:

socket.io.js:7 Mixed Content: The page at 'https://myweb.io/single/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://myweb.io:8070/socket.io/?EIO=3&transport=polling&t=NWJzFCW'. This request has been blocked; the content must be served over HTTPS.

将 wss 更改为 https 时出现错误:

socket.io.js:8 WebSocket connection to 'https://myweb.io:8070/socket.io/?EIO=3&transport=websocket' failed: WebSocket is closed before the connection is established.

【问题讨论】:

  • 一件看起来很奇怪的事情是,您有一个http 服务器用于您的socket.io 服务器,但正试图将https 用于您的socket.io 连接。那些必须匹配。而且,如果您是从使用 https 提供的网页执行所有这些操作,那么所有内容都必须是 https。您将需要创建一个将您的 socket.io 服务器绑定到的 https 服务器,然后使用 https 连接到它。
  • 我的 sockets.io 在 80 端口上运行我想在 8070 端口上运行它

标签: javascript node.js websocket socket.io


【解决方案1】:

使用我的 cpanel 密钥和证书文件尝试使用 https.createserver 而不是 http createserver 我可以从任何地方连接它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-05
    • 2018-06-13
    • 2021-05-29
    • 2017-12-23
    • 2019-12-14
    • 1970-01-01
    • 2022-12-15
    • 2020-10-21
    相关资源
    最近更新 更多