首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“无法按键查找会话: connect.sid”- session.socket.io

“无法按键查找会话: connect.sid”- session.socket.io
EN

Stack Overflow用户
提问于 2012-12-12 22:07:32
回答 3查看 1.7K关注 0票数 5

我对NodeJS开发非常陌生。我在我的快递应用程序中使用session.socket.io插件,但是当我调试应用程序“无法按键查找会话: connect.sid”时,在sessionSockets.on内部(‘connection’,.

下面是整个app.js

代码语言:javascript
复制
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'));
});

客户端:

代码语言:javascript
复制
<!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

代码语言:javascript
复制
{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.3",
    "socket.io":"*",
    "session.socket.io":"*"
  }
}

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

EN

回答 3

Stack Overflow用户

发布于 2013-02-06 14:41:36

这种情况发生在我使用Java客户端时,因为socket.io无法访问node.js会话。

所以,我决定最好不要使用session.socket.io插件。一个更通用的解决方案,可以与各种客户机一起工作,是:向客户端发送会话数据(或会话ID),可能的方法是向客户端代码插入Javascript片段;然后让客户端将会话ID发送回服务器。

票数 1
EN

Stack Overflow用户

发布于 2013-04-25 22:14:00

许多人都有相同的错误,并且有一个非常简单的解决方案,就像按照对吉突布的评论一样。这只是浏览127.0.0.1与本地主机的问题。

我希望这也能解决你的问题。

票数 1
EN

Stack Overflow用户

发布于 2014-09-26 12:24:32

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13849517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档