Tag: socket.io

通过socket.io通过websockets传输图像时负载很重

我想通过基于NodeJS的后端将图像从一个客户端传输到另一个客户端。 我每40毫秒发送一个图像到后端,然后将图像发送给另一个客户端。 我的问题是,每个客户端在后端增加5%的负载。 每个图像大约20KB。 我的前端代码如下所示: const socket = require('socket.io-client')('http://localhost:3000'); const fs = require('fs'); socket.on('connect', function () { console.log('connected'); socket.emit('room', '123456'); }); socket.on('joined', () => { console.log('joined the room'); const file = fs.readFileSync('./1902865_597805016961665_1536612023_n.jpg'); setInterval(() => { socket.emit('frame', file); }, 40); }); 后端看起来像这样: const app = require('express')(); const http = require('http').Server(app); const io = require('socket.io')(http); http.listen(3000, function […]

Socket.io:如何让每个人都获得不同的渠道?

我目前正在开发一个小网站,我想让每个人都听一个不同的频道,因为它就像一个网站,search服务器端的东西,然后回复客户端。 我想到的唯一想法就是这样的: 客户端: var randomnum = Math.floor((Math.random() * 100) + 1); socket.emit('getnumber', randomnum); // Then listen to that channel for incoming stuff socket.on(randomnum, function(msg){ […] 服务器端: socket.on('randomnum', function(randomnumget){ // Do things with it then […] socket.emit('getnumber', 'stuff'); }); 但是,这样做超过4将是一种困难,我敢肯定还有另一种简单的方法来做到这一点! 谢谢

如何从不同的主机连接到socket.io服务器?

我有一个网站说mydomain / home.php 现在我已经build立了一个NodeJs服务器在23.23.234.22 /家(/ home是一个获取路线)。 我写了socket.io服务器的代码,最后服务器正在运行。 现在我想写在home.php客户端代码将类似于下面给出的代码。 我想要的是向23.23.234.22 / home发送一个请求,当home.php打开时,我会在浏览器的控制台中看到一个套接字响应。 每次我向服务器发出请求时,我都希望这样做,不仅在服务器连接时。 我知道,用这个代码的东西是行不通的。 我不知道该怎么做 那么我需要进行哪些额外的更改? socket.js var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json({type: '*/*'})); var server = require('http').createServer(app); app.get('/home', function(req, res){ //WRITE SOCKET SERVER CODE HERE? }); var io = require('socket.io')(server); app.use(express.static('/opt/lampp/htdocs/testproject/node_modules')); app.use(express.static('/opt/lampp/htdocs/testproject/')); io.on('connection', function(client) { console.log("connected"); client.emit("message", "Some […]

套接字Io:从节点服务器发送文件到Python客户端

正如我在标题中引用,我想从我的服务器节点发送到我的客户端使用套接字io的Python的文件。 我search了一些例子,将文件从浏览器客户端发送到节点服务器,如https://github.com/rico345100/socket.io-file-example 。 它工作,现在我需要发送上传到服务器上的文件到Python客户端。 我已经在python和node之间维护了一个socket io连接。 任何想法应该使用哪种方法? 有一个例子可以遵循吗?

Socket.io无法从客户端连接到服务器

首先我的server.js端代码是: var socket = require( 'socket.io' ); var requestify = require('requestify'); var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = socket.listen( server ); var port = process.env.PORT || 3000; server.listen(port, function () { console.log('Server listening at port %d', port); }); 但是,此服务器代码在分配的端口中运行良好。 现在我的客户端代码是: var socket = io.connect( 'http://'+IP_ADDRESS+':3000', {query:'userId='+userId+'&orgId='+orgId}); console.log(socket); […]

socket.io中的实时状态更新应用程序,无法将状态发送到数据库(mysql)

我正在处理状态更新的Web应用程序,并使用socket.io为此目的,但我无法发送新的状态(消息)数据库。 我在这里工作的教程是链接 实时状态 var add_status = function (status,callback) { pool.getConnection(function(err,connection){ if (err) { callback(false); return "error found"; } connection.query("INSERT INTO status ('acstat') VALUES ('"+status+"')",function(err,rows){ connection.release(); if(!err) { callback(true); } }); connection.on('error', function(err) { callback(false); return; }); }); }

nodejs – 如何编写连接到nodeJS Server的客户端并接收广播消息

我有以下nodeJS服务器似乎正常工作。 我想编写一个客户端,从服务器接收消息,并根据消息调用一些JS。 涉及的步骤是: 用户访问URL http://server.xyz.com:8080/pa nodeJS服务器接收该呼叫并向所连接的客户端广播该pa是接收到的api呼叫。 nodeJS连接到服务器的客户端调用与pa动作相关的一些JS。 我的问题是: 1. How do I make sure the server broadcasts that message like Step 2? 2. How do I write a client that performs Step 3 above. 对于客户端来说,我看到很多对socket.io的引用,但我不确定这种情况下最好的框架是什么。 server.js var http = require('http'); http.createServer(function(request, response) { request.on('error', function(err) { console.error(err); response.statusCode = 400; response.end(); }); response.on('error', function(err) { […]

nodejs,socket.io和expressjs不能连接

我有一个文件夹结构,如: socket – project – main.js -node_modules – node_modules_folder_here – text.html 我的main.js文件如下所示: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ console.log("inside") res.send('<h1>Hello again</h1>'); }); io.on('connection', function(socket){ console.log("socket") console.log('a user connected'); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 我使用node main.js运行服务器,一切工作正常我的test.html如下所示: <body> <h3>Hellooww world</h3> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket […]

Node.js Socket.io OO项目类的结构

我在构buildnode.js socket.io项目时遇到了问题。 用户可以join房间。 一个Gameroom有一个队列,他们可以排队等待一场比赛。 如果有足够的人排队,他们会被扔进游戏厅。 客房实现聊天function,应该在Gamerooms和Lobbies中使用。 现在,我将io对象传递给实例,并使用它来侦听特定于其类function的事件。 我可以做什么改进? 为什么这是一个糟糕的或好的deviseselect? 还有什么替代方法? 有什么要考虑的? 我应该把“房间”,“游戏室”和“大厅”分成更独特的模型和控制器。 我知道这是一个相当“讨论”的问题,但我对每一个input都是开放的。 谢谢。 UML图 服务器实例化房间。 const io = socket.listen( http.createServer(app).listen(8080) ); console.log('Server listening..'); app.get('/', function (req, res) { res.sendFile(__dirname + '/test.html'); }); var main = new Room('', io); var a = new Gameroom('a', io); var b = new Gameroom('b', io); 房间是父类,但也可以实例化。 它应该是大家在login时join的根通道。 class Room […]

在socket.io中,压缩perMessageDeflate不起作用

我在请求和响应中都看到了头文件 Sec-WebSocket-Extensions:permessage-deflate 然而,通过套接字发送的数据仍然是相同的(针对大小数据进行validation)。 请为我澄清以下内容: 在套接字的帧中发送的数据应该被压缩对吗? 我能在套接字的框架选项卡下看到chrome开发者工具上的压缩数据吗?