【发布时间】: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