Tag: socket.io

socket.io获取连接的客户端数量的所有房间

我现在使用socket.io与多个节点,因此我开始使用socket.io-redis适配器( https://github.com/socketio/socket.io-redis )来帮助我在节点之间进行同步。 我想获得服务器上所有房间的列表以及每个房间中相应数量的客户端。 在任何时候,我可能有数以千计的房间,并希望快速计数每个房间。 要获得我要做的所有房间的清单: io.of('/').adapter.allRooms((err, rooms) => { console.log(rooms); // an array containing all rooms (accross every node) }); 这将返回所有房间的列表,但是现在我不确定每个用户有多less个连接。 然后,我可以运行下一个查询来分别计算每个房间的数量: //query the first room, second room and so on… io.in('firstroom').clients((err, clients) => { console.log(clients); // an array containing socket ids in 'room3'. Aggregate them to get the count }); 这似乎是非常低效的,因为我会打这么多的电话来单独计数。 有没有一个比这更有效的方法来获得所有的房间与相关的连接数清单? 我已经研究过修改适配器代码,但是我并没有真正理解代码以做出任何改变。

nodejs-无法获取从客户端发送的值

我正在创build一个Node服务器,它将执行长轮询并从MySql数据库读取数据,并通过WebSocket将其发送到连接到套接字的许多客户端。 我正在学习这个教程 它正在工作(它长时间轮询并将数据返回给客户端),但不是我所期望的。 在我的系统中,每个用户都有唯一的用户ID(主键字段)。 所以我试图通过这个userId到服务器,并返回属于一个用户的通知。 我的客户端代码是用纯JavaScript编写的,看起来像这样: <script> // create a new websocket var socket = io.connect('http://localhost:8000'); var params={ userId : 1 }; socket.emit('myotherevent', { user: params }); // on message received we print all the data inside the #container div socket.on('notification', function (data) { console.log(data); }); </script> 正如你所看到的,我试图通过userId,但我无法在服务器端获取。 这里是我提取它的代码部分。 // creating a new websocket to […]

如何在没有Express的情况下上传NodeJS中的文件

我试图从窗体中获取文件并将其保存到自己的磁盘上的任何文件夹中。 我想用套接字来做,但我不知道如何处理它。 有人能帮我吗? 这是我的代码: main.js var http = require('http'); var fs = require('fs'); var io = require('socket.io'); var path = require('path'); var server = http.createServer(function (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write("Not Found"); res.end(); } else { res.write(data, 'utf8'); res.end(); } }); }).listen(8000); var listener […]

在多个套接字上定位在canvas上

所以我正在尝试使用socket.io和HTML5canvas来制作节点多人游戏。 我已经得到的对象出现在彼此的客户端canvas上,但他们的位置是离开的。 如何定位这些对象,以便它们在客户端正确显示? 这是我的代码。 客户: var socket; var ship; var cnv; function setup() { cnv = createCanvas(1000, 1000); translate(120, 120); var x = (windowWidth – width) / 2; var y = (windowHeight – height) / 2; cnv.position(x, y); background(51); socket = io('http://localhost:3000'); ship = new Avatar(); socket.on('pos', newDrawing) var data = { x:ship.pos.x, y:ship.pos.y, r:ship.r, […]

socket.io-如何传递套接字id作为查询参数?

当我console.log()它时,我能够获得客户端的套接字ID。 任何人都可以告诉我如何将它作为query param在下面提到的上下文中传递: var params = { userId: 5, userType: 2 }; // create a new websocket var socket = io.connect('http://localhost:8000', { query: params }); socket.on('connect', () => { console.log('okay '+socket.id); }); 在这个例子中,用户连接到服务器,并在build立套接字连接时传递一些值作为参数。 但是,我怎样才能传递套接字ID与他们? Socket IO版本:2. *

在3Gnetworking上监听来自连接对象的TCP连接

我有一个连接的对象,在3Gnetworking上工作,并发送数据到我的IP在一个可选的端口。 我想读一个node.js程序上的这个对象发送的数据,因为我的服务器上的所有API都在node.js上 为此,我尝试创build一个“networking”服务器,如下所示: var net = require('net'); var server = net.createServer(function (socket) { socket.on('data', function (data) { var StrData = data.toString('ascii'); fs.appendFile("test.txt","data received : "+ StrData, function (err) { if (err) throw err; console.log(StrData); }); }); }); server.listen(2000, '0.0.0.0'); 我将所有的数据发送到我的“test.txt”文件的想要的。 问题是,在接收到第一个数据后,我的服务器似乎closures了连接,所以我的连接对象每次都必须创build另一个连接,只能发送第一个数据。 我的问题是: 我怎样才能让连接打开,使对象可以发送所有的数据? 我也尝试过'socket.io'和'http',但我无法得到我想要的。

C#socket.io不听发射事件

我试图编写一个程序,让我通过一个控制面板通过websocket(在Raspberry Pi上)发送消息来控制计算机的音量。 我已经写了控制面板和Node.JS服务器,但是,我有控制台应用程序的问题(加载到我想要控制的PC上)根本不在消息或发出,尽pipe连接到服务器好(我知道这是我的服务器login到它的控制台,用户连接)。 我是C#的新手(截至昨天),所以我对这门语言的了解让我很难find这个问题。 有什么build议么? 编辑 – .On方法根本不运行。 我试图写入控制台而不是改变音量,它不工作。 控制台应用程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using AudioSwitcher.AudioApi.CoreAudio; using Quobject.SocketIoClientDotNet.Client; namespace SoundControlV1 { class Program { //Hide Console Code. [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); const int SW_HIDE = 0; const int […]

http.Server的“连接”事件永远不会被调用

我创build一个简单的http服务器,我想通过套接字传输一些字节的数据。 所以我正在听服务器的“连接”事件。 但它从来没有被称为? 这是我的代码。 var http = require('http'); var server = http.createServer(function(req, res) { res.setHeader('Content-type', 'text/html'); res.end('<h3>Yeah! you are connected on ' + Date() + '</h3>'); console.log('User connected'); }); server.on('connect', function(req, socket, head) { //var addr = socket.remoteAddress; console.log('IP – '); }); server.listen(8000);

Socket.io套接字缓慢地拾取数据包

我在一个节点服务器上使用socket.io,在testing它的时候,我注意到在socket通信方面有一些滞后,当我连接了两个帐户时,所以我启用了debugging,发现parsing器在解码数据包之后需要花费很多的时间来捡起来,像这样: 例如日志 在这种情况下,其“仅”1秒,但往往可以更多。 它发生在所有types的消息上(例如连接到一个名字空间)。 服务器使用express,cors,body-parser,护照。 任何人都熟悉这个问题? 编辑:即使我做了最简单的事情,得到的数据包也花了很多时间。 简单的testing

Node.js通过socket.iostreampipe道http请求

我正在从事一个项目,将公开的互联网上的私人networking服务暴露在防火墙之后,但通过一个代理来validation所有的请求。 基本上我有一个公共的node.js进程完成所有的身份validation,并将请求redirect到适当的terminal。 我使用http-proxy来validation请求,一旦我authentication他们。 目前我有一个node.js服务在所有端点上运行,我使用openvpn创build隧道和iptables来redirect任何不在本地主机上的请求。 本地node.js进程pipe理添加和删除iptable规则以及openvpn连接的authentication加上实际的node.js代码的更新。 这工作,但笨重,并没有很大的可扩展性。 我想从公共服务器通过websocket连接到另一端的node.js进程的HTTP请求,并redirect到任何IP:端口的意思。 基本networking图 下面是我想要完成的基本networking。 我试图理解pipe道和水stream如何协同工作来实现这一目标,但并没有取得真正的成功。 任何人都可以提供一些基本的示例代码来完成这个任务吗?