我对NodeJS开发非常陌生。我在我的快递应用程序中使用session.socket.io插件,但是当我调试应用程序“无法按键查找会话: connect.sid”时,在sessionSockets.on内部(‘connection’,.
下面是整个app.js:
var http = require('http'),
connect = require('express/node_modules/connect'),
express = require('express'),
app = express();
var cookieParser = express.cookieParser('Your secret key here'),
sessionStore = new connect.middleware.session.MemoryStore();
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(cookieParser);
app.use(express.session({
store: sessionStore
}));
app.use(app.router);
});
var server = http.createServer(app),
io = require('socket.io').listen(server);
var SessionSockets = require('session.socket.io'),
sessionSockets = new SessionSockets(io, sessionStore, cookieParser);
app.configure('development', function() {
app.use(express.errorHandler());
});
app.get('/', function(req, res) {
res.end("Welcome to the API server");
});
sessionSockets.on('connection', function(err, socket, session) {
console.log('-----------------------');
console.log(err.error);
console.log('-----------------------');
socket.emit('welcome', {
msg: 'You\'re now listening to the api.'
});
});
server.listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});客户端:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Express+SocketIO testing</title>
</head>
<body>
<div id="responses">
<h2>API responses:</h2>
<ul></ul>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
$(document).ready(function() {
var socket = io.connect('//localhost:3000');
// Welcome message
socket.on('welcome', function(data) {
var li = '<li>Server said: ' + data.msg + '</li>';
$('#responses ul').append(li);
});
});
</script>
</body>
</html>package.json
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.0.3",
"socket.io":"*",
"session.socket.io":"*"
}
}欢迎任何帮助或暗示。谢谢。
发布于 2013-02-06 14:41:36
这种情况发生在我使用Java客户端时,因为socket.io无法访问node.js会话。
所以,我决定最好不要使用session.socket.io插件。一个更通用的解决方案,可以与各种客户机一起工作,是:向客户端发送会话数据(或会话ID),可能的方法是向客户端代码插入Javascript片段;然后让客户端将会话ID发送回服务器。
发布于 2013-04-25 22:14:00
许多人都有相同的错误,并且有一个非常简单的解决方案,就像按照对吉突布的评论一样。这只是浏览127.0.0.1与本地主机的问题。
我希望这也能解决你的问题。
发布于 2014-09-26 12:24:32
https://stackoverflow.com/questions/13849517
复制相似问题