Socket.IO 在本地工作,但不是外部工作

Socket.IO works locally, but not exernally

本文关键字:工作 外部 Socket IO      更新时间:2023-09-26


我是 Node 的新手.js并且正在尝试完成一个简单的聊天应用程序。
但我卡住了。我尝试谷歌并使用其他解决方案,但由于某种原因我找不到它的工作。如果有人能帮助我,那就太好了。

我得到的错误是响应时间太长。
这是我的代码。

服务器端:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
//##### PUSH HTML FILE
app.get('/', function(req, res){
     res.sendFile(__dirname +'/index.html');
});
//##### START SERVER
http.listen(3000, '0.0.0.0', function(){
     console.log('started on port: 3000');
});
//##### USER CONNECTED
io.on('connection', function(socket){
     console.log('A User Connected');
//##### LOG MESSAGE
socket.on('chat message', function(msg){
    console.log(msg);
    io.emit('chat message', msg);
});
//##### LOG USERNAME
socket.on('set username', function(username){
    console.log('NEW USER: ' + username + ' has been set!');
    io.emit('set username', username);
});
//#####USER DISCONNECTED
socket.on('disconnect', function(){
    console.log('A user disconnected');
    });
}); 

客户端:

<script src="/socket.io/socket.io.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
        var socket = io();
        //##### SET USERNAME
        $('#set_username').submit(function(){
            socket.emit('set username', $('#username').val());
            return false;
        });
        //##### SET MESSAGE
        $('#sendmsg').submit(function(){
        var msg = '['+$('#username').val()+'] ' + $('#m').val();
            socket.emit('chat message', msg);
            $('#m').val('');
            return false;
        });
        //SET MESSAGE
        socket.on('chat message', function(msg){
            $('#messages').append($('<li>').text(msg));
        });
    </script>

提前感谢!

查看评论:

您正在侦听 NAT 后面的端口 3000。如果要从外部连接,则需要在路由器中配置端口转发到本地服务器。您的 NAT 规则中有拼写错误。