我用 Socket.io 1.2 编写了这段代码
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var room;
var messageEmitted;;
app.get('/', function(req, res){
res.sendFile(__dirname +'/index.html');
});
app.get('/lol', function(req, res){
res.sendFile(__dirname +'/lol.html');
});
io.use(function(socket,next){
var handShakeData=socket.request;
room=handShakeData._query['roomName'];
messageEmitted=handShakeData._query['messageText'];
next();
});
io.on('connection',function(socket){
console.log('A user connnected on : '+room);
socket.join(room);
io.to(room).emit('emittedMessages',messageEmitted);
console.log(messageEmitted);
/*socket.on('emittedMessages',function(msg){
//socket.emit(msg); // Send message to sender
socket.broadcast.emit(msg); // Send message to everyone BUT sender
});*/
socket.on('disconnect', function(){
// io.to(room).emit('emittedMessages','A User Disconnected on: '+room);
console.log('A user disconnected');
});
});
http.listen(3000,function(){
console.log('Listening oon Port: 3000');
});
这段代码工作得很好。
我正在尝试从名为Gottox的 android 库中访问此代码,此版本需要 0.9.16
但是,当我尝试通过键入以下命令移至旧库即 0.9.16 时:
npm remove socket.io
npm install socket.io@0.9.16
当我运行时:
node server.js
我收到此错误:
D:\NodeJSSocketBroadcast>node server.js
D:\NodeJSSocketBroadcast\server.js:3
var io=require('socket.io')(http);
^
TypeError: object is not a function
at Object.<anonymous> (D:\NodeJSSocketBroadcast\server.js:3:28)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
如何在旧版本的 socket.io 中实现相同的功能?我找不到任何文档。我还发现此链接描述相同。
请帮忙。!:( :(