2015-04-27 47 views
0

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

//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

回答

0

浏览器和socket.io需要一个HTTP服务器,而不仅仅是一个TCP服务器。您可以在socket.io documentation中看到代码示例。该文档页面上的第一个服务器和客户端代码示例显示了您需要的基础知识。

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

下面是来自socket.io文档一个代码示例:

服务器代码:

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> 
+0

所以我需要创建HTTP就像另一台服务器的应用程序在提供的例子中? – jemz

+0

@jemz - 你不需要另一个服务器应用程序,你只需要让你的一台服务器成为一个http服务器,而不是一个普通的tcp服务器。 – jfriend00

+0

如果我将代码更改为http,就像在您的文章中一样,我仍然可以接收客户端(设备)正在发送的数据吗? – jemz

相关问题