Tag: socket.io

在数据标题中不显示cookieSession密钥

我试图解决在socket.io中访问会话variables的臭名昭着的问题。 我基本上已经阅读过谷歌关于这个话题的每一个链接,而且我还在挣扎。 毕竟我的路由我有这个: io.set('authorization', function(data,accept) { data.cookie = cookie.parse(data.headers.cookie); —> console.log(data.cookie); data.sessionID = connect.utils.parseSignedCookie(data.cookie['express.sid'].split('.')[0].substring(2), conf.sessionSecret); sessionStore.get(data.sessionID, function (err, session) { console.log(session); }); }); 不幸的是,我画了一个箭头的console.log返回: { 'connect.sid': 's:3pIi31DPthO8KVOjqzYpeL75.nHvKOpMZsUsyto7CtBJgcJZIiBSN+IC2/aD0GcfYftU' } 所以当然,我得到一个关于express.sid未定义的错误。 当我更改express.sid connect.sid时,我的会话variables未定义。 我真的很努力地解决这个问题 – 我已经在这里待了几个小时。 任何帮助? 编辑:总结我解决的问题: 在app.config中,我使用cookieSession而不是会话 我的客户端连接到我的服务器的端口转发的外部ip版本。 这不包含cookie数据。 .split('。')[0] .substring(2)在查找sessionID时是绝对必要的 在io.set('authorization,function(handshake,callback)…必须调用“callback(null,true)”)的结尾,以便socket.io连接正常进行

在nodeJS中使用express和socket.io时,重复值

我有一个使用express和socket.io的nodeJS应用程序。 我想osolate一些代码,以便它只能在我服务的一个页面上运行。 为了做到这一点,我用express来听取请求,并提供一个html页面作为回应。 app.get('/archive', function(request, response) { response.sendfile(__dirname + "/views/table.html"); } 我也有一个socket.io函数来侦听并发送数据到html页面。 io.sockets.on('connection', function(socket) { channel.subscribe('cheat', function(message) { socket.emit('message', message); });\ 当代码是这样的时候,一切运行良好,但只要我尝试并将app.get函数中的socket.on函数放在我有问题。 第一个请求完美地工作,但是当页面刷新时,所有的数据都被复制。 第一次是x2然后x3然后x4等等。 有谁知道这是为什么发生? 这是我最后的代码看起来像: app.get('/archive', function(request, response) { response.sendfile(__dirname + "/views/table.html"); io.sockets.on('connection', function(socket) { channel.subscribe('cheat', function(message) { socket.emit('message', message); }); }

Node.js客户端重新连接的唯一标识符

我试图build立一个失去连接的客户重新连接程序。 在客户端JS我可以检测到连接丢失,并定期尝试重新连接到服务器。 当我重新连接,但服务器将使用一个新的套接字。 在客户端这是我的重新连接逻辑 var socket = io.connect(ip, { 'reconnect': true, //will create a new socket on the server 'reconnection delay': options.retryInterval, 'max reconnection attempts': 10 }); socket.on("disconnect", function() { this.connected = false; this.autoretry(); }); //establish the connection – similiar to the reconnect method socket.emit("connect", this.options); //…. autoretry: function() { if(this.connected) {return;}; var next = […]

express.js + socket.io – 如何从客户端应用程序初始化服务器上​​的会话

我必须创build2个应用程序。 一个应用程序是使用express.js和socket.io的服务器。 第二个应用程序是一个简单的客户端(静态html + js文件),不能从服务器express.js实例中提供。 只有当express.js路由被访问时,才使用cookie express.sid来build立会话。 我使用socket.io从客户端(即http://client.addr )连接到服务器(即http://server.addr:0000 )时出现问题 – 我无法build立express.js会话因为我没有访问服务器路由,我没有express.sid会话cookie。 我结束了与客户端尝试发送AJAX调用服务器/set-session-cookie路由希望我可以识别会话,发送encryptionsessionID cookie和启动socket.io连接挂钩到在以前的调用中创build的会话,但AJAX调用后不会发送cookie。 服务器路由: app.all('/set-sesion-cookie', function(req, res){ res.header('Access-Control-Allow-Origin', req.headers.origin); res.header('Access-Control-Allow-Credentials', 'true'); res.cookie('express.sid2', req.sessionID, {signed: true}); res.send(200); }); 客户电话: $.post('http://127.0.0.1:3000/set-sesion-cookie'); 第二个想法是只发送包含encryption会话ID的string,并使用JS创buildcookie,但是我找不到encryptionalgorithm是什么res.cookie('express.sid2', req.sessionID, {signed: true}); 做手动。 这种方法是否有效? 如果还有其他方法可以达到这个目的,请告诉我。 TIA。

运行在虚拟机和主Web服务器内的Node.js实例

我非常熟悉Node.js的asynchronous,事件驱动,非阻塞编程模型的编程范例。 我现在正试图了解在虚拟机的云计算生态系统中如何扩展Node.js的使用范围。 在我的Web仪表板的服务器端,我有Node.js作为http服务器运行,并与Cassandra数据库进行交互。 用户通过浏览器仪表板与我们的云服务进行交互。 在客户端和服务器之间打开的Websockets将允许服务器端向用户的仪表板启动操作。 部分用户的任务活动将是产生工作stream活动的基于云的虚拟机。 这些虚拟机将执行需要与系统主Cassandra数据库交互的应用程序。 我非常希望对以下Node.js体系结构scheme有一些反馈意见: 当用户生成虚拟机时,虚拟机将启动,并在虚拟机上运行一个Node.js实例 。 该VM的Node.js实例主动打开一个Web套接字,该套接字具有正在运行或分配的系统的主要Node.js实例 (可能有多个可用于与Cassandra数据库通信的Node.js实例),即Node-从虚拟机的Node.js实例build立到节点websocket 。 VM的Node.js实例设置了一系列要在VM内部观察的事件。 系统的Node.js实例还从VM的Node.js实例中设置了一系列要监视的事件。 当虚拟机的Node.js实例事件触发完成后,启动并完成所需的Cassandra DB操作。 系统的Node.js实例还监视来自VM的特定事件,以启动Cassandra DB操作。 实际上,我在这里问的是: 在两个Node实例与同一个后端数据库交谈的情况下,通过websocketsbuild立Node.js-2-Node.js通信通道是否有意义? 在这个configuration中,似乎我能够build立一个高度灵活的双向虚拟机事件系绳,可以监视/监听来自系统的Node.js实例和VM节点的DBlogging动作的规定事件。 js实例。 我在这里描述的是一个非典型的和无意义的情景? 在这个用例中有更好的方法来使用Node.js吗? 有没有更适合的组件configuration? 亲切的问候,马克

在Javascript中重新启动SetInterval

我清除间隔后很难重新启动时间到10秒。 当状态成功时,应该重新运行设置的间隔 以下是我的代码: <code> var countdown = 10; var startTime = currTimer(); var myInterval = setInterval(function() { countdown–; if(countdown == 0){ var endTime = currTimer(); clearInterval(myInterval); countdown = 10; if (status == "success"){ setTimeout(function(){myInterval}, 200); } } io.sockets.emit('timer', { countdown: countdown }); }, 2000); </code>

如何使用Twisted(或Autobahn)连接到socket.io服务器?

我试图找出一种方法来连接到一个Python Twisted客户端的socket.io(node.js)服务器。 服务器是我没写的聊天服务器,所以我无法控制它。 我尝试了一些东西,主要是TCP连接,但是我想我需要使用Websockets接口来成功地进行通信。 为了testing,我使用了socket.io教程的代码, http: //socket.io/#how-to-use用于服务器。 var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') app.listen(8080); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my […]

socket.io没有拿起子文件夹

当我在本地运行socket.io让说http://localhost:8000/这不会select所有的文件夹的CSS和JS。 这是我的结构: <head> <script type="text/javascript" src="js/main.js"></script> <link rel="stylesheet" href="css/main.css"> <script src="socket.io/socket.io.js"></script> <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> </head> <script> var socket = io.connect('http://localhost:8000'); $('.box').click(function(){ var content = $(this).attr('id'); //console.log(content); socket.emit('click',content); }); socket.on('test', function(content){ $(".box").css({"background":"grey"}); $(".one,.two,.three,.four").hide(); $("#"+content).css({"background":"red"}); $("."+content).fadeIn(); //$('.box').css({"background":"grey"}); }); </script> server.js: var app = require('http').createServer(handler), io = require('socket.io').listen(app), fs = require('fs'); // creating the server ( localhost:8000 ) app.listen(8000); […]

socket.io:将浏览器和计算机与连接相关联

我正在用socket.io库在node.js中编写一个游戏。 它有一个服务器2个客户端连接和播放。 我的游戏工作正常,但有一个问题。 如果已连接的客户端连接到游戏,则将其视为第三个连接请求,这会造成混乱。 当客户端浏览器未closures时,通常会重新启动节点服务器。 我可以解决这个问题。

安装socket.io时出错

我试图在成功安装node和nmp之后在Windows(8)中安装socket.io包 但是以同样的方式npm install socket.io ( npm install socket.io )我得到以下错误。 http://pastebin.com/EykjZ85X Generating code Finished generating code validation.vcxproj -> c:\~\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws\build\Release\validation.node socket.io@0.9.16 node_modules\socket.io ├── base64id@0.1.0 ├── policyfile@0.0.4 ├── redis@0.7.3 └── socket.io-client@0.9.16 (xmlhttprequest@1.4.2, uglify-js@1.2.5, active-x-obfuscator@0.0.1, ws@0.4.31) 我不知道这是一个错误,但运行基本testing应用程序http://socket.io/#how-to-use不起作用。 它说它找不到套件socket.io 任何想法出了什么问题?