Tag: socket.io

从Sails.js控制器访问cookie

如何从sails.js控制器访问浏览器cookie? 这个: cookie = req.param('cookie', 'No cookie specified'); cookies = req.param('cookies', 'No cookie specified'); 返回默认值('没有指定cookie')。 我应该在客户端读取和写入cookie,还是可以在服务器端完成?

如何从不同的/另一个路线发射?

我使用express js&socket.io来构build我的简单应用程序。 所以,有一个使用PHP的网站“a”,会将一些数据发布到我的应用程序(使用快速js构build)。 在app.js中定义了2条路由,它们是: / send_voting_result – >将接收来自网站“a”的POST数据 / voting_result – >将被用户访问&我想使其实时更新投票结果数据发布到/ send_voting_result 我在这里做的是: app.js var app = require('express')() , server = require('http').createServer(app) , io = require('socket.io').listen(server); … // Receive POST data and do update the data to /voting_result route app.post('/send_voting_result', function(req, res){ var result = JSON.parse(req.body.kandidat); io.of('/voting_result').emit('getResult', {votingResult : result.data}); }); app.get('/voting_result', function(req, res){ […]

刷新/重新加载socket.io“连接”事件不会触发

今天有socket.io的问题。 当我刷新页面.on(“connect”,{})永远不会触发。 当我从url中加载一个页面时,所有的事件都应该如此。 正如你可以看到下面我设置gameStatus破碎。 在一系列客户/服务器通信之后,游戏状态应该更新为“就绪”,并且应该在服务器上创build新的玩家。 当我重新加载页面(cmd + r)时,没有客户端事件触发。 服务器端识别新的连接“看到”新的socket.id并发出“发送空间”事件,但事件在客户端没有收到。 我试图强制新的连接,但我不知道我是否正确使用。 上周这工作正如我所料,然后今天甚至没有更新的代码,它不能让页面刷新触发这些事件。 一切正常,如果我从完整的url( http://localhost:3000在这种情况下)加载页面, index.html的: var io = io.connect('/', {'force new connection': true}); client.js var gameStatus = 'broken'; var localPlayer; window.onload = function() { console.log(gameStatus); // "broken" io.on("connect", onSocketConnected); io.on("disconnect", onSocketDisconnect); io.on("new player", onNewPlayer); io.on("send room", function(data){ console.log("send room fired"); // doesn't fire on refresh addPlayer(data); […]

pipe道Redis发布到套接字? Node.js的

我正在构build一个应用程序,偶尔在给定频道上发布数据: redisClient.publish('global-channel', data); 客户端需要能够连接到服务器并收听全球广播。 这种方法有什么问题吗? 特别是,为每个套接字连接创build一个redisClient? io.sockets.on('connection', function(socket){ var socketRedis = redis.createClient(); socketRedis.subscribe('global-channel'); socketRedis.on('message', function(ch, msg){ socket.emit('event', msg); }); }); 我是Node,Redis和socket.io的新手……还在学习哪一块应该处理某些任务以及在哪里(服务器和客户端) – 谢谢!

如何捕捉canvas中的小变化,并将它们发送给所有使用该canvas的相互连接的用户?

我想让人们通过HTML5canvas沟通。 如果一个人画在canvas上,另一个人应该能够同时看到,而且是副诗。 我使用node.js作为具有express框架和socket.io的服务器。 有像.toDataURL和其他方法是将其转换为blob,然后发送它的方法。 但是这些方法将整个canvas转换成图像,然后通过websockets发送。 有没有一种有效的方式,我只能发送创build的新数据或在canvas上进行的更改,而不是创build一个图像,然后再次发送给所有用户? 保持像素的轨迹是更好的吗?

用telnettesting节点的websockets

我正在使用ws库在Node js中编写一个基于套接字的服务器,我想testing我的代码是否工作。 我已经看到其他地方使用telnet来testing简单的聊天服务器,但是当我启动我的服务器并执行telnet 127.0.0.1 5000,虽然输出显示“连接到本地主机”,我的服务器不会logging任何与新连接关联的任何东西。 我testing我的服务器错误或是我的服务器根本无法正常工作? 我的服务器代码如下: var WebSocketServer = require('ws').Server , http = require('http') , express = require('express') , app = express() , port = process.env.PORT || 5000; var server = http.createServer(app); server.listen(port); var wss = new WebSocketServer({server: server}); console.log('websocket server created'); wss.on('connection', function(ws) { var id = setInterval(function() { ws.send(JSON.stringify(new Date()), function() { […]

RemoveListener移除在“this”侦听器之后启动的所有侦听器

我有一个socket.io服务器,在每个socket.io连接中都有一个自定义的方法'looper.output'。 每当我closures一个socket.io连接,我启动另一个自定义方法“looper.disconnect”,应该删除closures客户端的“输出”侦听器。 我的问题是,无论何时closures客户端,looper.disconnect不仅从该客户端中删除侦听器,还会从closures客户端后启动的每个客户端中删除侦听器。 例如,如果我有4个客户端A,B,C和D,也按该顺序连接到服务器,并closures客户端C; looper.disconnect将删除C和D的侦听器,但只保留A和B. 我需要改变什么来使looper.disconnect只删除调用它的客户端的侦听器? 在上面的例子中,我只想要删除客户端C的侦听器。 var express = require('express'); var http = require('http'); var spawn = require('child_process').spawn; var util = require('util'); var fs = require('fs'); var EventEmitter = require('events').EventEmitter; var sys = require('sys'); var app = express(), server = http.createServer(app), io = require('socket.io').listen(server); function Looper(req) { this.req = req; EventEmitter.call(this); } sys.inherits(Looper, EventEmitter); […]

Socket.io限制用户数量

我正在尝试将基于聊天室的应用程序放在一起,每个房间只能有2人在房间里。 还需要记住用户进入房间的顺序。 在一个聊天室types的套接字示例中扩展,但允许使用“房间”来配对,然后可以玩“随机游戏”,这里是房间的“大厅”或“创build房间”,每个房间都会或者是1人或2人(和全部)。 我似乎无法弄清楚的是如何限制连接到socket.io的房间的人数? 有可能的?

使用Node.js和Socket.io实时更新大型HTML内容

我正在构build一个Web应用程序,根据一个客户端所做的更改来更新每个客户端的Web页面的HTML内容,为此我使用了Node.js的Socket.io。 我正在使用HTML5的contenteditable属性来允许客户端手动编辑我需要为其他客户端更新的div元素的内容。 我面临的问题是,我不明白通过websockets发送的数据通知服务器,反过来,其他客户端所做的更改。 在添加和删除每个字符时发送整个innerHTML意味着通过websockets发送大量的数据,导致性能差和速度慢。 发送附加数据不是一个选项,因为我们不知道在div元素的哪个位置数据被添加或删除或编辑。 请注意,使用键盘并不是一个客户端可以更改其网页副本的HTML内容的唯一方式。 所需div元素的数据根据​​客户端使用javascript的几个活动而改变。 现在我需要知道如何才能通过websocket发送确切的变化信息,甚至稍作修改即可获得实时体验。 PS我不打算使用任何现有的模块,如Share.js,但欢迎提出build议。

用nodejs插入mongodb

我试图插入一些数据在我的mongodb与nodejs每当套接字发射。 这里是代码: io.sockets.on( "connection",function( socket ){ socket.on( "send", function( data ) { console.log(data.name + " and the content is: " + data.content); mongodb.connect( "mongodb://127.0.0.1", function( err, db ) { if(err) throw err; var to_be_inserted = {name: data.name,content: data.content}; db.collection("chat").insert(to_be_inserted,function(err,objects){ if(err) throw err; }); }) }) }) 但是每当我去我的mongo控制台并input db.chat.find() 我无法find插入的logging。 我敢肯定,我有mongod打开,我敢肯定,套接字发射。 而且插入之前的consoloe.log确实有效。 这是我的mongo客户端 var mongodb = […]