【发布时间】:2012-02-08 20:51:51
【问题描述】:
这是我的问题:
我有服务器 A,运行 node.js 并使用 socket.io 与客户端(网络浏览器)通信。这一切都运行良好,花花公子。
但是,现在我有服务器 B,它也需要通过 websockets 连接到服务器 A,所以我碰壁了。我发现的所有 node.js websocket 客户端都不能与服务器 A 上的 socket.io 一起使用。
所以,这就是我努力的目标:
.--------. .----------. .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------' '----------' '----------'
Client-server 通过socket.io完成连接
现在,服务器 B(运行 node.js)应该通过 websocket 连接到服务器 A(为了通过端口 80)。但是……
即使是 socket.io-client 模块中的示例代码也不起作用...:/
// Connect to server
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
// Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected.');
});
代码顺利通过,几秒钟后执行结束。
更新:代码示例
服务器(运行良好)如下所示:
// Load requirements
var http = require('http'),
io = require('socket.io');
// Create server & socket
var server = http.createServer(function(req, res){
// Send HTML headers and message
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('<h1>Aw, snap! 404</h1>');
});
server.listen(8080);
io = io.listen(server);
// Add a connect listener
io.sockets.on('connection', function(socket) {
console.log('Client connected.');
// Disconnect listener
socket.on('disconnect', function() {
console.log('Client disconnected.');
});
});
客户端是这样的
console.log('1');
// Connect to server
var io = require('socket.io-client')
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
console.log('2');
// Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected!');
});
console.log('3');
1、2 和 3 打印得很好,没有错误,几秒钟后进程就退出了
此外,服务器 A 不会向日志输出任何内容,即使我将 socket.io 日志记录设置为“一切”。
【问题讨论】:
-
你肯定是 websockets 客户端,还是可以只使用普通的旧套接字?
-
the node.js websocket clients I've found哪些? -
我至少需要模拟 websockets,因为我需要连接到同一个服务器。
-
我试过socket.io-client、ws、websocket-node
-
socket.io-client 为我和其他人工作;我认为您应该发布一个 [非] 工作示例来说明您的问题。另外,尝试添加 process.on('UncaughtException') 或一些日志记录; “没有任何错误”意味着“看起来不够努力”:)