这是服务器的代码:
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');
});
答案 0 :(得分:1)
你的第二个代码块看起来更合适。我们无法确定您的 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
时,在浏览器中,您应该会在您的服务器上获得一个登录信息,并返回一个显示“你好”的响应页面。