Socket.io io.use fails - TypeError: io.use is not a function
Socket.io io.use fails - TypeError: io.use is not a function
我正在做一个需要套接字握手会话的项目我正在尝试让这段代码工作,我从 https://www.npmjs.com/package/express-socket.io-session
var app = require('express')(),
server = require("http").createServer(app),
io = require("socket.io")(server),
session = require("express-session")({
secret: "my-secret",
resave: true,
saveUninitialized: true
}),
sharedsession = require("express-socket.io-session");
// Attach session
app.use(session);
// Share session with io sockets
io.use(sharedsession(session));
io.on("connection", function(socket) {
// I've add this one...
console.log(socket.handshake.session);
// Accept a login event with user's data
socket.on("login", function(userdata) {
socket.handshake.session.userdata = userdata;
});
socket.on("logout", function(userdata) {
if (socket.handshake.session.userdata) {
delete socket.handshake.session.userdata;
}
});
});
server.listen(3000);
我运行它,首先我得到了这个
var io = require("socket.io")(server);
^
TypeError: require(...) is not a function
at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:8:30)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
解决添加
io = require("socket.io").listen(server);
然后我得到了这个
io.use(function(socket, next) {
^
TypeError: io.use is not a function
at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:15:5)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
有解决此问题的想法吗?
socket.io@0.9.17
我在相同的上下文中遇到了相同的问题。尽管你的问题在这里已经有一段时间了,但我会 post 我的方法。
整个问题是我使用了:
var io = require('socket.io');
但应该是:
var io = require('socket.io')();
在末尾没有这些大括号的情况下,其他一切都可以正常工作,但显然 io.use 没有。
我没有通过服务器:
app.io = io;
在/bin/www
app.io.attach(server);
希望这对某人有用。
更新:我使用 Socket 1.5.2。
我已经解决了升级 nmp、node.js 和 socket.io 的问题。但是要做到这一点,我必须找出我所有的依赖项都搞砸了:由于这些错误,我无法升级软件包..
我正在做一个需要套接字握手会话的项目我正在尝试让这段代码工作,我从 https://www.npmjs.com/package/express-socket.io-session
var app = require('express')(),
server = require("http").createServer(app),
io = require("socket.io")(server),
session = require("express-session")({
secret: "my-secret",
resave: true,
saveUninitialized: true
}),
sharedsession = require("express-socket.io-session");
// Attach session
app.use(session);
// Share session with io sockets
io.use(sharedsession(session));
io.on("connection", function(socket) {
// I've add this one...
console.log(socket.handshake.session);
// Accept a login event with user's data
socket.on("login", function(userdata) {
socket.handshake.session.userdata = userdata;
});
socket.on("logout", function(userdata) {
if (socket.handshake.session.userdata) {
delete socket.handshake.session.userdata;
}
});
});
server.listen(3000);
我运行它,首先我得到了这个
var io = require("socket.io")(server);
^
TypeError: require(...) is not a function
at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:8:30)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
解决添加
io = require("socket.io").listen(server);
然后我得到了这个
io.use(function(socket, next) {
^
TypeError: io.use is not a function
at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:15:5)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
有解决此问题的想法吗?
socket.io@0.9.17
我在相同的上下文中遇到了相同的问题。尽管你的问题在这里已经有一段时间了,但我会 post 我的方法。
整个问题是我使用了:
var io = require('socket.io');
但应该是:
var io = require('socket.io')();
在末尾没有这些大括号的情况下,其他一切都可以正常工作,但显然 io.use 没有。
我没有通过服务器:
app.io = io;
在/bin/www
app.io.attach(server);
希望这对某人有用。
更新:我使用 Socket 1.5.2。
我已经解决了升级 nmp、node.js 和 socket.io 的问题。但是要做到这一点,我必须找出我所有的依赖项都搞砸了:由于这些错误,我无法升级软件包..