Tag: socket.io

从websocket发送数据到socket.io

我用websocket接口连接到websocket服务器。 如果我想通过我的websocket接口发送数据,我从websocket服务器通过http服务器连接到我的客户端,我应该使用socket.io? 所以最后我会把socket.io连接到http服务器和websocket接口来获取数据,如果有消息会通过socket.io发送给客户端。 这是最好的设置? 代码示例: // Require HTTP module (to start server) and Socket.IO var http = require('http'), io = require('socket.io'); var WebSocket = require('ws'); var ws = new WebSocket('ws://localhost:5000'); // Start the server at port 8080 var server = http.createServer(function (req, res) { // Send HTML headers and message res.writeHead(200, { 'Content-Type': 'text/html' }); […]

套接字IO:一个房间里的用户数量

使用Socket.IO v.1.3.5作为node.JS … 我怎样才能得到在一个房间里连接的真实用户( 不是会话 )的数量? 会议次数: var room = io.sockets.adapter.rooms[roomId] || {}; var numSocketsInRoom = Object.keys(room).length; 但是,如果同一用户在多个浏览器选项卡中连接,则会增加numSocketInRoom,因为是会话的数量,而不是实际的用户数量。 在我的情况下,任何套接字都有用户保存在socket.userId ,但我不知道如何指示这个获得连接在一个房间里的用户数量… 谢谢!

Node.js + Socket.io + Redis应用程序通过PM2大内存占用

我对node.js和socket.io都很陌生,但是我正在尝试构build一个简单的服务来侦听Redis通知(由PHP应用程序提供),并将它们广播给当前login的任何用户,并连接到一个套接字.io空间例如'site_name:user:user_id'。 我有它的工作,但节点应用程序的内存占用迅速变得越来越大,从100mb到200 + MB很快,约100名在线用户和积极浏览,我想知道是否有什么设置错误在这里。 PM2正在处理节点应用程序,而nginx被设置为反向代理。 服务器端: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var redis = require('redis'); var redisClient = redis.createClient(); var allClients = []; server.listen(8890); io.sockets.on('connection', function (socket) { allClients.push(socket); socket.on('subscribe', function(data) { console.log('Joining room', data.room); socket.join(data.room); redisClient.subscribe(data.room); }) socket.on('disconnect', function() { console.log('Disconnect'); var i = allClients.indexOf(socket); delete allClients[i]; […]

socket.io安装错误的Windows 10

我使用Windows 10 X64,Python 2.7.10和node.js 4.2.0 当我尝试安装socket.io时,显示此错误: C:\WINDOWS\system32>npm install socket.io > bufferutil@1.2.1 install C:\WINDOWS\system32\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil > node-gyp rebuild C:\WINDOWS\system32\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node rebuild ) gyp: binding.gyp not found (cwd: C:\WINDOWS\system32\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil) while trying to load binding.gyp gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp […]

面向对象的编程在socket.io中

自那时以来,我一直在做基于socket.io的编程。 现在,随着时间的推移,基于socket.io的更复杂的系统和应用程序,使用ES6中的所有js,类等,所有的时间和大量的排放和维护更加困难。 所以我想知道是否有任何方法我们可以使用socket.io也oops的方式。 例如有更多看起来像这样的叫做dnode的lib,但是使用socket.io的底层注释我想。 例如看到这个示例代码。 /** Server.js */ client.on('login',function(user,pass,cb){ var user=User.authenticate(user,pass); if(user instanceof User){ cb(null, user); } else { cb(user);// error } }); /** Client.js */ server.emit('login','test','test',function(err,user){ if(err) return console.error(err); var picture=user.getPhoto(); // this method is defined on server… user.on('new_post',function(post){ // events on object… }); // all data ob user class are synced via server […]

SocketTesterARC disconnectedWithError:连接后调用

我正在使用SocketTesterARC连接到节点服务器。 第一次当我运行代码套接字连接,然后didReceiveEvent:被调用。 在这个过程之后,如果我调用了sendEvent:服务器就会断开连接。 2015-10-17 11:29:07.067 SocketNew[621:115352] onDisconnect() 2015-10-17 11:29:32.070 SocketNew[621:115352] start/reset timeout 2015-10-17 11:29:32.090 SocketNew[621:115352] event 2015-10-17 11:29:32.091 SocketNew[621:115352] didReceiveEvent >>> data: { args = ( "m_PkgKh7XmcX4B_dDp-2" ); name = connected; } 2015-10-17 11:30:07.409 SocketNew[621:115352] send() 2015-10-17 11:30:07.410 SocketNew[621:115352] send() >>> 5:::{"args":["{\"sequence\":\"55547876721444995060\",\"userId\":\"77\",\"socketId\":\"bducg4h5h8fh4bbl92hj\"}"],"name":"checkStatus"} 2015-10-17 11:30:07.415 SocketNew[621:115352] Timed out waiting for heartbeat. 2015-10-17 11:30:07.415 SocketNew[621:115352] onDisconnect() 2015-10-17 […]

Socket.io安装程序导致数百个传输轮询GET请求

我正在使用express.js服务器端,并按照socket.io 安装指南 。 不幸的是,套接字连接永远不会成功,而且我收到了不受欢迎的GET请求,如下所示: 这是我的设置: 客户端 – index.html <script src="https://cdn.socket.io/socket.io-1.3.7.js"></script> <script> // var socket = io.connect('http://localhost'); var socket = io.connect('http://localhost:9000/'); socket.on('connected', function (serverData) { console.log(serverData); }); </script> SERVER – /io/index.js 'use strict'; var socketio = require('socket.io'); var io = null; module.exports = function(server) { if (io) return io; io = socketio(server); io.on('connection', function(socket) { console.log('Sockets […]

在承诺范围之外发送连接范围之外的事件

我正在做一个婚介web应用程序,我使用ExpressJs , Redis和Socket.io 。 故事 : 我用你的用户名,任务名称和难度提交一个表单(用AJAX) 我循环所有与选定任务相关的团队,并确定哪一个可用 然后我想添加当前的“客户端”到一个频道(选定的团队),我想广播一条消息给频道的所有用户,如: client.join(team); io.in(team).emit('matchmakingInProgress', teamData); 事实是,我使用Promise为了避免大callback地狱,我没有访问这些variablesio和套接字,因为它们预先使用,我正在寻找一种方式来检索它们。 app.js var express = require('express'), app = express(), server = require('http').createServer(app), io = require('./events/sockets').listen(server), port = process.env.PORT || 8080 ; // other stuff here … app.use(require('./controllers')); server.listen(port, function() { console.log('Listening on port ' + port) }); 事件/ sockets.js var socketio = require('socket.io'); […]

如何阻止客户端Socket.io从循环sockets排放?

比方说,我有一个名为“add”的socket.io事件,它接受0个参数,当在服务器端收到时,递增计数variables,然后向每个客户端发送新的计数值。 我如何阻止人们从本质上打开JS控制台,并使用如下循环: for(var i = 0; i < 1000; i++) { socket.emit('add'); } 另一个可能更有意义的场景是:如何在聊天应用程序中检测洪泛? 我完全理解,没有人真的可以确保客户端代码不被用户操纵。 如何为每个客户端的每个socketio事件处理程序添加某种forms的超时?

观察和同步非常大的JavaScript对象

其实我正在一个项目上工作,这需要观察非常大的JavaScript对象与许多子对象(客户端)。 我的目标是使用相对的socket.io同步所有的属性更改。 有些Proprties是dynamic创build的,所以整个对象不适合任何Schema。 我尝试了几个object.observe的polyfills,但由于数据量和更新属性的数量,在CPU性能上失败了。 是否有一些框架或lib至极可以帮助我呢? 谢谢!