Articles of socket.io

Socket.io消息事件触发多次

我试图学习节点,并开始与socket.io创build混搭。消息传输已经开始,但我遇到了一些麻烦。 消息事件多次触发,导致单个消息在接收者的框中多次出现。 我已经路由到exports.chat套接字,并想知道如果这是造成这个问题? 为了缩小这个问题:消息发射的次数=客户端的连接顺序。 也就是说,如果一个客户端连接第二个,他的消息将会触发两次。 连接第三个客户三次。 这里是代码片段: exports.chat = function(io, pseudoArray, req, res){ res.render('chat', {title: 'ChatPanel.'}); var users = 0; io.sockets.on('connection', function (socket) { // First connection users += 1; // reloadUsers(io, users); socket.on('message', function (data) { // Broadcast the message to all if(pseudoSet(socket)) { var transmit = {date : new Date().toISOString(), pseudo : returnPseudo(socket), […]

数组和ArrayBuffer有什么区别?

我只是想知道为什么每个人都使用ArrayBuffer而不是一个正常的array , string或stringJSON从服务器发送消息到客户端。 效率更高吗? 另外,只是想知道Uint8Array是什么,它是如何不同,在哪里使用两个等等。 我目前正在使用Node.js与Socket.io,但我很乐意改为纯WebSocket s,如果这是一个更好的方法。

如何在socket.io循环外播放

我有服务器端的下面的代码,这个函数调用与socket的新连接。 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.broadcast.emit('user connected'); }); 现在我有另一个模块,需要rest的请求,并希望在所有打开的套接字广播。 如何做呢? 有没有办法使用无sockets广播? 喜欢 io.broadcast.emit('user connected'); 像这样编辑更多? io.sockets.broadcast.to('m1').emit('user message', 'from', 'msg');

Node.js的socket.io服务器callback不起作用

我正在处理一个简单的Node.js双向客户端\服务器通信通道,我试图在服务器上使用socket.io ,在客户端上使用socket.io- client。 我已经插入了下面的代码,因为你会看到它是非常基本的东西,我在我的本地机器上运行 – 以最大限度地减less复杂性。 我看到的行为是: 我启动服务器。 服务器将“服务器启动”logging到控制台。 我启动客户端。 客户端日志“服务器已准备就绪!” 没有其他事情发生 我期望的是服务器login一个“客户端已经准备就绪!” 消息,然后是内容( '已收到' )。 我甚至使用过WireShark来嗅探线路,它确实显示客户端正在按照devise发出消息 – 但是服务器上的callback没有被触发。 我使用Express v3.1.0 , socket.io v0.9.13和socket.io-client v0.9.11 (全部通过npm安装)运行node v0.8.4 。 这是服务器代码… var http = require('http'), express = require('express'), app = express(), server = http.createServer(app); app.configure(function(){ app.use(express.static(__dirname + '/public')); }); server.listen(8080); console.log("Server started"); var io = require('socket.io').listen(server); io.sockets […]

Uncaught TypeError:无法调用null的onClose方法

Iam在node.js聊天应用程序上工作,我已经在Windows上承载IIS上的node.js。 我的意图是包括Node.js在Asp.net mvc由Jon Galloway解释在asp.net web应用程序中执行聊天(文本,audio,video)。 我的安装细节: iisnode.js – iisnode-full-iis7-v0.2.3-x86 node.js – node-v0.8.19-x86 express.js版本 – 3.1.0 socket.io版本 – 0.9.13 在Windows 7 32位系统与IIS 8.0expression 我已经在IIS上成功托pipe了node.js,并运行示例 但是当我开始搪塞socket.io我卡住了.. 当我开始连接客户端浏览器到服务器,我在客户端浏览器说错误 Uncaught TypeError:无法调用null的socket.io.js:1771方法'onClose' 在我的服务器应用程序iam使用socket.ioconfiguration io.configure(function () { io.set('transports', [ 'xhr-polling' , 'jsonp-polling' ]); io.set("polling duration", 10); if (process.env.IISNODE_VERSION) { io.set('resource', 'node/socket.io'); } }); 这个问题是相关的版本iam使用(express,和socket.io node.js)或在我的coading,任何想法的问题请帮助我。 谢谢。

Socket.io从Express控制器发出

我对Node.js / Express很新,我将它用作AngularJS应用程序的后端。 我查看了所有的StackOverflow在我的问题一些帮助,但我似乎无法弄清楚如何将build议移植到我的代码。 我的申请工作如下: 长期运行的Scala进程会定期发送我的Node.js应用程序日志消息。 它通过张贴到HTTP API来完成 收到post后,我的应用程序将日志消息写入MongoDB 日志消息然后实时发送到Angular客户端。 我有一个Node的模块的问题,因为我不知道如何引用Express控制器中的套接字实例。 正如你所看到的,在server.js中,socket.io在那里被实例化。 但是,我希望控制器本身logs.js能够使用socket.io实例发出。 我如何在控制器中引用io? 我不知道如何将io实例传递给控制器​​,以便发送消息? 这里是一些节点代码: server.js var app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); require('./lib/config/express')(app); require('./lib/routes')(app); server.listen(config.port, config.ip, function() { console.log('Express server listening on %s:%d, in %s mode', config.ip, config.port, app.get('env')); }); io.set('log level', 1); // reduce logging io.sockets.on('connection', function(socket) { console.log('socket […]

如何使用套接字(.io)将audio/video从node.js服务器stream式传输到html5页面

我需要从一个node.js服务器stream式传输mp3或mp4,并在html5页面上观看。 我正在尝试使用socket.io来加速通信,我希望它会降低我使用简单的http的延迟。 我在我的项目中设置了socket.io,无论是在客户端(移动web应用程序)和服务器上,但我找不到,也找不到在networking上如何正确发送数据,并将其引导到一个标签。

amqp.node不会检测到连接丢失

我们有一个运行socket.io服务器的nod​​e.js脚本,它的客户端使用RabbitMQ队列中的消息。 我们最近已经迁移到Amazon AWS,RabbitMQ现在是两台机器(冗余实例)的集群。 AMQP连接会不时丢失(这是一个限制,从具有冗余VM的高可用性环境到达,我们必须应付它),如果尝试重新连接,DNS将select要连接的实例它是一个具有数据复制的集群,因此连接哪个实例并不重要)。 问题是重新连接的尝试从来没有做过; 一段时间后,当连接丢失时,amqp.node显然没有注意到连接已经丢失。 此外,消费者停止接收消息,并且socket.io服务器停止接受新的连接。 我们在RabbitMQ URL处设置了55秒的心跳超时(不要与socket.io心跳超时相混淆),并使用amqp.node的callbackAPI检查“错误”和“closures”事件,但显然从未发出。 队列期望消耗的消息被消除。 我们希望节点脚本检测丢失的连接并自行完成,因此环境将自动启动新的进程并重新build立连接。 这里是代码,也许我们正在做一些错误的amqp.nodecallbackAPI或其他东西。 var express = require('express'); app = express(); var http = require('http'); var serverio = http.createServer(app); var io = require('socket.io').listen(serverio, { log: false }); var socket; var allcli = []; var red, blue, green, magenta, reset; red = '\033[31m'; blue = '\033[34m'; green = […]

聊天应用程序:node.js或APE?

我想创build一个聊天应用程序,它将使用php / codeigniter来执行视图和用户界面。 我一直在阅读大量的推荐node.js或socket.io的stackoverflow上的post。 然而我也碰到过APE(Ajax Push Engine)。 我真的不太了解这个,也不知道要用哪一个。 我阅读了node.js,看到了很多关于它的好东西,但是让我担心的是它比较新,而且没有太多真实世界的网站正在testing/使用它。 另一方面,APE呢。 它看起来类似于node.js。 但就像我说的,我不知道要选哪一个。 创build一个聊天应用程序哪一个更好? 谢谢!

node.js + express.js + socket.io授权:没有cookie

我无法从我的socket.io授权中获取“cookie”数据。 io.configure(function() { io.set('authorization', function (data, cb) { console.log(data); // data.headers.cookie <– should be the cookie }); }); 所以它打印的是: { headers: { host: 'frisr.dk:1000', connection: 'keep-alive', origin: 'http://frisr.dk', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2', accept: '*/*', referer: 'http://frisr.dk/', 'accept-encoding': 'gzip,deflate,sdch', 'accept-language': 'da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4', 'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' }, address: { […]