node.js - 无法连接到 Socket.io nodejs 服务器
问题描述
这是服务器的代码:
var http = require('http');
var app = require('express')();
http = http.createServer(app).listen(3400,() => {
var io = require('socket.io')(http);
io.on('connection', (socket) => {
console.log('connection');
});
});
我正在使用 Socket.io 客户端测试工具:https ://amritb.github.io/socketio-client-tool/
当我输入地址http://myWANIP:3400
作为 URL 并点击连接时,没有任何反应。
我究竟做错了什么?
非常感谢任何帮助:D
编辑:主机位于 NAT 后面,端口 3400 正在被转发(TCP)。
Edit2:经过一些有用的评论后,我将代码更改为:
var http = require('http');
var app = require('express')();
var server = http.createServer(app).listen(3400);
var io = require('socket.io')(server);
io.on('connection', (socket) => {
console.log('connection');
});
解决方案
您的第二个代码块看起来更合适。我们无法真正判断您的 NAT 和端口转发是否设置正确,但如果是,那么您应该能够通过以下网页建立 socket.io 连接:
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io("http://myWANIP:3400", {transports: ["webSocket"]});
</script>
并且,当该连接发生时,您应该会console.log('connection');
在服务器日志中看到结果。
验证您的 NAT 和端口转发是否正常工作的另一种方法是将其添加到您的服务器:
app.get("/", (req, res) => {
console.log("got web page request");
res.send("hello");
});
然后,当您到达 时http://myWANIP:3400
,在浏览器中,您应该会在您的服务器上获得一个日志,并返回一个显示“你好”的响应页面。
推荐阅读
- github-pages - Can't Get Fast.ai fastpages GitHub 显示
- html - 我只希望页脚标签适合屏幕,而不是整个身体
- swift - Swift UI:当视图中显示空列表时,如何显示错误消息?
- firebase - 如何从firebase获取文档?
- c++ - 有没有办法在字符串中添加字符?
- python - 谷歌云语音到文本没有为 OGG 和 MP3 文件提供输出
- javascript - 在 Webflow 中的特定部分启用自定义代码
- java - 部署在 Docker 上的 Tomcat 应用程序:可以连接到 Postgres,但新数据未显示在数据库中
- node.js - Chrome 策略指令(内容安全策略):拒绝加载脚本'https://www.paypal.com/sdk/js
- python - 无论如何,我可以从 Google or-tools 提供的 Job Shop Scheduling 文件(主要是 .csv)中导入“jobs_data”吗?