我正在开发一个简单的Node.js双向客户端/服务器通信频道,我正在尝试在服务器上使用socket.io,在客户端上使用socket.io-client。如下面所示的代码非常基本,我在本地机器上运行两者以最小化复杂性。我看到的行为是:1.我启动了服务器。2.服务器在控制台中记录“Server started”。3.我启动了客户端。4.客户端记录“Server is ready!”5.什么也没有发生...我预期的是服务器记录一个"Client is ready!"消息,然后是内容("Ready received")。我甚至使用WireShark嗅探了一下线路,似乎客户端按设计发出了消息,但是服务器上的回调并未触发。我正在运行node v0.8.4,带有express v3.1.0,socket.io v0.9.13和socket.io-client v0.9.11(所有这些都是通过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 的文档和示例有些混乱(说实话),而且它们似乎是一个移动目标......但从我的了解来看,我认为这应该可以工作。
我希望有人能给我一些建议,告诉我哪里出错了?
server ready
事件名称...尝试使用没有空格的server_ready
... - udidu