2011-09-08 140 views
0

我已经使用node.js/socket.io建立了一个tcp服务器,但我无法弄清楚如何通过客户端连接到它。我已经尝试了http://socket.io/#how-to-use的客户端代码,但它向HTTP服务器发送了一个http请求,并且在建立连接后,网页没有完成加载,加载循环继续移动。我可以从其他套接字中知道http请求会将所有头文件发送到tcp服务器,但我不认为连接已建立,因为网页从未完全加载,我无法将任何其他内容传递给tcp服务器。你如何建立网页的客户端到tcp服务器?如何通过客户端的node.js/socket.io连接到tcp服务器?

我的客户:

<script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"></script> 
<script> 
var socket = io.connect('http://localhost:81'); 

socket.on('connect', function() { 
    socket.send('hi'); 
}); 

socket.send('hi1'); 
socket.emit('hi2'); 
</script> 

我的服务器:

var app = require('net') 
    , fs = require('fs') 

var sockets_list = []; 

var server = app.createServer(function (socket) { 
    sockets_list.push(socket); 
    socket.write("Echo server\r\n"); 

    socket.on('data', function(data) { 
    console.log(data); 
    for (var i = 0; i < sockets_list.length; i++) { 
     sockets_list[i].write(data); 
    } 

    }); 

    socket.on('end', function() { 
    var i = sockets_list.indexOf(socket); 
    sockets_list.splice(i, 1); 
    }); 

}); 

server.listen(81); 

不用说, '嗨' 的消息从未到达的TCP服务器。

回答

1

我想这是跨域请求问题。您从localhost:82加载页面,但向localhost:81发送请求。

0

晚会有点迟,也是我在stackoverflow上的第一个答案。

当我最初开始使用socket.io时,遇到了同样的问题。问题是与服务器端的代码,你不要求socket.io模块:

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

io.on('connection',function(socket){ 
    console.log('socket connected successfully'); 

    socket.on('data',function(data){ 
     console.log('data',data); 
    }); 
} 

然后,一旦服务器启动并运行,您请求的脚本“socket.io/socket.io.js “从它:

<script type="text/javascript" src="http://localhost:81/socket.io/socket.io.js"> 

我不相信你可以混合/匹配的核心‘与socket.io的客户端库中的NodeJS净’模块。

希望这会有所帮助。

相关问题