【问题标题】:NodeJS and SocketIO on Server服务器上的 NodeJS 和 SocketIO
【发布时间】:2014-10-05 20:51:53
【问题描述】:

我的服务器上的 NodeJS 和 SocketIO 设置有问题, 我想通过这样做来访问 HTTP 端口

var socket = io.connect("http://domain.com:8070"); 可悲的是,这会返回 ERR_CONNECTION_TIMED_OUT

这是我的服务器:

 var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app, { log: false })
  , fs = require('fs');

var mysocket = 0;
var socket = 0;
app.listen(8070);

function handler (req, res) {
  fs.readFile(__dirname + '/app/tpl/skins/habbo/client.php',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }
    res.writeHead(200);
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
  console.log('Client successfully connected'); 
  mysocket = socket;
});

//udp server on 41181
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.on("message", function (msg, rinfo) {
  console.log("Packet recieved from server: " + msg);
  if (mysocket != 0) {
     mysocket.emit('field', "" + msg);
     mysocket.broadcast.emit('field', "" + msg);
  }
});


server.on("listening", function () {
  var address = server.address();
  console.log("udp server listening " + address.address + ":" + address.port);
});
server.bind(41181);

和我的客户:

<script src="http://domain.com:8070/socket.io/socket.io.js"></script>
        <script type="text/javascript">
            var socket = io.connect(http://domain.com:8070);
            socket.on("hello", function(l){

                var k = l.split(/,/);
                switch(k){

                    case "testing":
                    {
                        window.alert('lol');
                        return;
                    }

                }
            });

        </script>

关于如何让它在http://domain.com:8070 上工作的任何想法?谢谢。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    您的套接字似乎没有在端口 8070 上侦听。

    未经测试,但值得一试:

    var io = require('socket.io').listen(app.listen(8070), {log: false});
    

    您还可以从客户端中删除 URL(尽管它不应该改变任何东西):

    var socket = io.connect();
    

    编辑:

    您还应该将地址用引号括起来:

    var socket = io.connect("http://domain.com:8070");
    

    【讨论】:

    • 我忘了提到它可以在 serverip:8070 上运行,但我不想让我的 serverip 在 firebug 中显示,例如
    • 在这种情况下你不能使用 localhost 吗?
    • 并将地址用引号括起来
    猜你喜欢
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多