我正在开发一个简单的 Node.js 双向客户端\服务器通信通道,我正在尝试在服务器上使用socket.io ,在客户端上使用socket.io- client。
我已经插入了下面的代码,你会看到它是非常基本的东西,我在我的本地机器上运行这两个 - 以尽量减少复杂性。
我看到的行为是:
- 我启动服务器。
- 服务器将“服务器启动”记录到控制台。
- 我启动客户端。
- 客户端记录“服务器准备就绪!”
- 没有其他事情发生...
我期望服务器记录“客户端已准备好!” 消息,然后是内容('Ready received')。
我什至使用 WireShark 来嗅探这条线,它确实看起来客户端正在按设计发出消息 - 但服务器上的回调没有触发。
我正在运行带有express v3.1.0、socket.io v0.9.13和socket.io-client v0.9.11 的节点v0.8.4 (全部通过npm安装)。
这是服务器代码...
var http = require('http'),
express = require('express'),
app = express(),
server = http.createServer(app);
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
server.listen(8080);
console.log("Server started");
var io = require('socket.io').listen(server);
io.sockets
.on('connection', function(socket){
socket.emit('server ready', { msg: 'ready' }) ;
})
.on('comms', function(content) {
console.log('Client is ready!');
console.log(content);
});
这是客户端代码...
var clientio = require('socket.io-client');
var socket = new clientio.connect('http://localhost', { port: 8080 });
socket
.on('server ready', function(data){
console.log('Server is ready!');
socket.emit('comms', 'Ready received');
})
.on('connect-error', function(error) {
console.log('Connection Error\n' + error);
})
.on('error', function(error) {
console.log('Socket Error\n' + error);
})
socket.io和socket.io-client的文档和示例都有些混乱(出于慈善目的),它们似乎有点移动目标......但据我所知,我认为这应该可行。
我希望有人能给我建议,我哪里出错了?