我正在尝试使用node / express运行socket.io(我已经做了无数次 - 所以我非常困惑)。当我尝试使用io.configure
方法配置socket.io时出现错误:
io.configure(function() {
^
TypeError: Object #<Server> has no method 'configure'
at Object.<anonymous> (/home/yz/webdev/ground/app.js:377:4)
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:902:3
我的代码正如它在socket.io上所说的那样 - 但我会发布它以防万一:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(8000);
//other declarations
app.use(...
passport.use(...
//some routes
app.get(...
app.post(...
io.configure(function() {
io.set('transports', ['websocket','xhr-polling','flashsocket']);
io.set('flash policy port', 10843);
});
io.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
...
});
});
错误在io.configure
方法引发 - 我之前已经与其他网站一起做过,我不明白它现在不能正常工作。感谢。
更新
我只是在阅读here,io.configure
不再存在 - 但是,我似乎无法让它以新的方式运作。这是我的新代码:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
//var io = require('socket.io').listen(server);
var socket = require('socket.io')({
'transports': ['websocket','xhr-polling','flashsocket'],
'flash policy port': 10843
});
var io = socket.listen(server);
io.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
...
});
});
我没有收到任何错误,socket.io似乎没有出现。
答案 0 :(得分:0)
您正在为服务器分配io
,当您尝试调用io
上可用的socket.io
上的功能时,这会导致问题。尝试替换此行:
var io = require('socket.io').listen(server);
这一行:
var io = require('socket.io')(server);
socket.io docs列出了您可以利用的几种配置模式,并且可以使用socket.io
创建服务器。但是,由于您已经在创建服务器,因此您不需要使用socket.io
。