“无法通过键查找会话:connect.sid” - session.socket.io [英] "could not look up session by key: connect.sid" - session.socket.io

查看:185
本文介绍了“无法通过键查找会话:connect.sid” - session.socket.io的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对NodeJS的开发非常新鲜。
我正在使用我的快速应用程序中的 session.socket.io 插件,但是当我调试应用程序时,我收到此错误无法通过密钥查找会话:connect.sid,在中的会话插槽('connection',...



这是整个 app.js

  var http = require('http'),
connect = require('express / node_modules / connect'),
express = 'express'),
app = express();

var cookieParser = express.cookieParser('你的秘密密钥在这里'),
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.sess ion({
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(欢迎使用API​​服务器);
});

sessionSockets.on('connection',function(err,socket,session){

console.log('------------ -----------');
console.log(err.error);
console.log('-------------- ---------');

socket.emit('welcome',{
msg:'你现在正在听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测试< / title>
< / head>

< body>

< div id =responses>
< h2> API响应:< / 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');

//欢迎消息
socket.on('welcome',function(data){
var li ='< li>服务器说:'+ 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:*
}
}
/ pre>

欢迎任何帮助或提示。谢谢。

解决方案

这有助于我解决这个问题: https://github.com/wcamarao/session.socket.io/issues/35


I am pretty new to the NodeJS development. I am using the session.socket.io plugin in my express app, but I am getting this error when I debug the app "could not look up session by key: connect.sid", inside sessionSockets.on('connection', ...

Here is the entire 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'));
});

Client side:

<!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":"*"
  }
}

Any help or hints are welcome. Thank you.

解决方案

This helped me solve this problem: https://github.com/wcamarao/session.socket.io/issues/35

这篇关于“无法通过键查找会话:connect.sid” - session.socket.io的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆