在socket.io浏览器中使用net模块继续加载

时间:2015-04-27 05:21:46

标签: node.js socket.io socket.io-1.0

我想在node.js中使用tcp net模块,我的客户端将是浏览器,也不是浏览器(设备)。 当我试图在浏览器中运行index.html时,我的浏览器继续加载看起来像循环..我不知道我的代码有什么问题。 我尝试使用telnet它工作正常,问题是在浏览器上我无法正确加载index.html

  

// app.js

var net = require('net');
var io = require('socket.io')(net);




var clients = [];


var server = net.createServer(function (socket) {
    console.log("New client connected");
    clients.push(socket);
});





server.listen(1337, 'localhost', false, function () {
    console.log('server bound');
});



io.on('connection',function(socket){
    socket.emit('news', { hello: 'world' });
});

这是我的客户代码。

http://pastie.org/10115599

1 个答案:

答案 0 :(得分:0)

浏览器和socket.io都需要http服务器,而不仅仅是TCP服务器。您可以在socket.io documentation中查看代码示例。该doc页面上的第一个服务器和客户端代码示例向您展示了所需的基础知识。

实际上,socket.io连接的第一步是一个http请求,然后“升级”为webSocket协议。因此,服务器必须是http服务器。并且socket.io挂钩到http服务器以接收传入连接。

这是socket.io doc中的代码示例:

服务器代码:

var app = require('http').createServer(handler)
var io = require('socket.io')(app);

app.listen(80);

io.on('connection', function (socket) {
    // incoming socket.io connection established
});

function handler (req, res) {
    // process http requests for normal web page serving    
}

客户代码:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>