Tag: socket.io

套接字的身份validation方法

我试图通过sailsjs和passport获得身份validation工作。 这个挑战似乎是套接字连接没有会话,sailsjs嘲笑请求对象,导致它没有设置Passport中间件。 这导致nodejs抛出一个错误,说req对象没有一个叫做logIn的方法。 所以,我试着按照@xdissent在这里提供的代码片断: 通过websockets进行Sails.js + Passport.jsauthentication,这确实可以让我login而不会抛出错误。 或者呢? 事实certificate,它做了什么 ,但我不知道是什么。 因为通过不同的(套接字)请求获取req.user ,我得到一个空的对象返回。 我也看了redis。 这出来了: redis 127.0.0.1:6379> keys * 1) "waterline:broadcasting:_sequences:id" 2) "sess:aDJI0YHzh17E3AMjtKsZSijs" redis 127.0.0.1:6379> get "sess:aDJI0YHzh17E3AMjtKsZSijs" "{\"cookie\":{\"httpOnly\":true,\"path\":\"/\"}}" redis 127.0.0.1:6379> 所以有一个会话,只是没有用户存储在它。 所以长话短说,我如何获得护照和sailsjs发挥好套接字。 更新 :我想了解一些关于会话,套接字和一般的风帆的信息。 所以,如果我在一个会话中设置东西,并刷新浏览器,我希望它仍然在那里。 如果我在与套接字连接相同的页面上进行xhr调用,不应该是相同的会话吗?

使用socket.io node.js和传入消息的通知系统的体系结构实现和devise

免责声明 我以前没有用过node.js 我以前没有使用过socket.io 我正在考虑实施Google Plus,Facebook,StackOverflow风格的通知系统。 我不是一个没有经验的开发人员,最终我会弄清楚这一点,但我只是在寻找一个正确的方向。 我想要的是浏览我的网站的用户在浏览会话期间收到新消息时得到通知。 目前,我的所有消息都存储在一个表中。 | id | messageSubject | messageBody | hasRead | readDate | sentDate | sentToUser | sentFromUser | | 1 | HelloWorld | Nada | 0 | `null` | `null | 1 | 10 | 现在,我的所有消息都从几十个不同的来源中检索出来。 消息可以由第三方通过APIinput 消息从发送网格中拉出 消息可以通过私人消息控制器发送。 等等 我想要的是有一种方式能够通知用户收到新消息时。 我很高兴以任何方式重构我的代码,这使我有可能通知我的node.js当我收到插入消息,如果这是我需要做的。 但是我不确定从哪里开始。 我的问题是,我的所有消息都通过几十个不同的来源input到mysql中,我的Insert语句在很多方面。 所以我只是不知道继续下去的最好方法。 谢谢。

获得基本的socket.io示例工作

即使运行非常基本的socket.io示例,我也遇到了麻烦。 例如他们网站的欢迎页面上的第一个例子: var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 在服务器端和 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> 在客户端。 如果我将服务器端保存在host.js文件中,客户端保存在client.htm文件中,并运行npm host.js , info – socket.io started warn […]

在io.sockets.on()之外的socket.send

我有一个循环,连续查询数据库。 当查询返回结果时,node.js应用程序将通过socket.io v0.8向连接到节点服务器的每个客户端发送消息。 问题: io.sockets.broadcast.send('msg')在setInterval()循环的中间被调用,所以它不在io.sockets.on()的callback函数中,因此这是行不通的。 当使用io.sockets.send('msg') ,似乎没有消息发送到客户端。 Node.js代码 setInterval(function() { util.log('Checking for new jobs…'); dbCheckQueue(function(results) { if (results.length) { io.sockets.broadcast.send('hello'); } }); }, 10*1000); 但是,如果要从io.sockets.on('connection',..)调用setInterval ,则每个连接的客户端都将创build一个额外的循环! Node.js代码 io.sockets.on('connection', function(socket) { setInterval(function() { util.log('Checking for new jobs…'); dbCheckQueue(function(results) { if (results.length) { io.sockets.send('hello'); } }); }, 10*1000); }); 客户JS socket.on('hello', function() { console.log('HELLO received'); }) *如何获得一个单循环运行,但仍然能够发送消息到所有连接的客户端?

在socket.io上closures套接字服务器端?

我很确定这是一个简单的问题,但是我不知道socket.io文档在哪里, http: //labs.learnboost.com/socket.io/上的文档也没有帮助。 所以,假设我有一个socket.io http服务器,并写了一个网站连接到它。 如何为服务器提供保护,以防止未经授权的人员(不通过网站连接的人员)被阻止/丢弃/禁止。 如何结束服务器端的套接字连接? 所以,如果我有 io.sockets.on('connection', function (socket) { socket.on('end', function() { var i = global_sockets_list.indexOf(socket); global_sockets_list.splice(i, 1); }); socket.emit('end'); // Doesn't work, just sends data socket.end(); //error }); 如何结束套接字连接? (连接然后断开以上是为了testing)

如何避免在html页面刷新后在socket.io中创build一个新的套接字连接?

我曾尝试过socket.io,我发现当客户端的html页面加载时,一个新的套接字连接创build。当我刷新页面时,发现一个新的套接字连接create,然后旧的连接断开。 我的问题是如何避免这一点? 因为我正在构build聊天室应用程序。 当用户进入房间页面时,在“连接”服务器端发出“欢迎用户xxx来了!”,并在“断开”事件发出“用户xxx离开”。 但是当用户刷新当前页面时,这将会触发“断开”事件并再次填充“连接”事件。 它会发出“欢迎用户xxx来!” 和“用户xxx离开”。 消息一起。 如何忽略页面刷新事件?就像HTTP会话? 更新 :我已经find了解决问题的方法。 从这个问题处理浏览器重新加载socket.io

断开客户端的socket.id?

是否有可能得到断开客户端的socket.id ? 下面的代码给了我undefined的socket.id Node.js代码 io.sockets.on('connection', function() { socket.on('disconnect', function(socket) { console.log(socket.id); }); });

如何在同一个端口上使用ExpressJS和Socket.io?

在ExpressJS的第三个版本中, express.createServer()更改为express(),这一更改使得难以在同一个端口上绑定socket.io。 也许有人可以find强有力的决定。 现在,这不起作用: var express = require('express') , app = express.createServer() , io = require('socket.io').listen(app); 我目前的工作stream程: https : //gist.github.com/3596852

使用特定的path和命名空间连接到Socket.IO服务器

我的Node.js应用程序运行在URL http://www.example.com/myapp/ 。 我已经configuration了一个Socket.IO服务器(版本1.3.5)与一个自定义命名空间。 以下是一个示例代码片段: var server = http.createServer(…); var io = socketio(server); io .of('/a/b/c') .on('connection', function (socket) { socket.emit('update', {msg: '/a/b/c'}); }); 我无法弄清楚如何从客户端连接到这个服务。 我的猜测(这些都没有工作): io.connect('http://www.example.com/myapp/a/b/c'); io.connect('http://www.example.com', {path: '/myapp/a/b/c'}); io.connect('', {path: '/myapp/a/b/c'}); io.connect('http://www.example.com/a/b/c', {path: '/myapp'}); io.connect('http://www.example.com', {path: '/myapp/socket.io/a/b/c'});

Socket.io – 客户端断开后手动重新连接

我使用node.js和socket.io创build实时Web应用程序。 我将给用户完全控制套接字连接,如手动断开和(重新)连接。 function socket_connect() { console.log('func socket_connect'); socket = io.connect('http://url/to/the/app'); } function socket_reconnect() { console.log('func socket_reconnect'); socket_connect(); } function socket_disconnect () { console.log('func socket_disconnect'); if (socket) socket.disconnect(); } 在客户端启动socket_connect()函数工作正常,但使用socket.disconnect() ,没有新的连接启动。