Articles of socket.io

如何用Electron连接到Socket.io服务器?

我是node.js的新手,并且正在学习Socket.io的教程。 使用Electron连接到Socket.io服务器的最佳方式是什么?

在nodejs和angularjs中使用套接字

我是新的socket.I有问题,而在我现有的项目中使用套接字。我已经在我的项目中包括socket.io.js文件,也创build使用套接字的工厂。 套接字请求正从angular度方向成功。 我想要做什么时,我的API响应中的东西被改变,它会自动调用并显示结果在我的页面。所以这里是我的代码。我不知道我怎么能实现这个与套接字 app.get('/ttms/getAlertsMessage/:customerid/:timstmp', getCookies, ttms.getAlertsMessage);// route var socket = require('socket.io'); var io = socket.listen(server); app.set('socketio', io); io.on('connection', function (socket) { console.log("==============connected=========")// this shows me connected socket.on('test',function(data){ console.log(data) }) }); 这里是节点api将调用: exports.getAlertsMessage = function(req, res, next) { var customeruuid = req.param('customerid'); var start_time = new Date().getTime(), request = require('request'), api_url = global.common.base_url + 'ams/1.0.0/message/customeruuid/'+customeruuid; var […]

Socket.IO手动“断开”和var范围发射?

有人可以解释如何脱节工程? 在我的控制台日志中,断开连接function在客户端离开游戏时被调用两次。 为什么是这样? 当它发生时,似乎playerName的范围在第二个调用中也是已知的,但不是第一个。 这是打这些电话的客户吗? 另外,它如何知道该范围内的playerName,但在send-message它不知道什么是playerName? (1是playerName) Oct 06 11:57:36 overwatchtracker app/web.1: [RECV] Player disconnected: 1 Oct 06 11:57:36 overwatchtracker app/web.1: [RECV] Player disconnected: undefined Oct 06 11:57:29 overwatchtracker app/web.1: [RECV] Message: undefined asdfasdf 这是我的一些代码: const io = socketIO(server) var clients = [] io.on('connection', (socket) => { var playerName; socket.on('login-user', (name) => { playerName = […]

在使用node.js和mongodb的聊天应用程序中,消息正在为每个页面刷新保存。 热解决?

这里是我的js代码,用于检索已经存在的用户数据,现在我正在检索相同的聊天logging,并在我的内部聊天窗口 这里是我的代码写在index.js文件 io.on('connection', function(socket){ var query = Chat.find({}); query.sort('-created').limit(4).exec( function(err,data){ if (err) { res.send(err); } else{ io.sockets.emit("chat history", data); } }); }); 我正在发送聊天logging,同样在chat.js文件中显示如下 socket.on("chat history", function(data){ for(var i=data.length-1; i >=0; i–){ displaymsgs(data[i]); } }); function displaymsgs(data){ feedback.innerHTML = ""; output.innerHTML += '<p><strong>' + data.username + ':</strong>' + data.message + '</p>'; } 现在我无法获得限制的消息(4),并且每当页面重新加载时,消息也正在加载到数据库。 请给我一个解决scheme,我犯了错误,如何接近它。 先谢谢你。

与Socket.io和Docker无法获得超过980个连接

我无法扩展我的简单的Socket.IO应用程序过去使用Docker的980个并发连接。 但是,如果我在macOS Sierra 10.12.6本地运行它,我可以获得超过3000个连接。 我已经包含了我正在testing的一个简单的SocketIO应用程序的回购: https : //github.com/gsccheng/simple-socketIO-app 我的Docker-for-Macconfiguration为4个CPU和5GB内存。 版本是 Version 17.09.0-ce-mac35 (19611) Channel: stable a98b7c1b7c 我正在使用炮兵版本1.6.0-9加载testing $ artillery run load-test.yaml 我正在显示一些设置的冗余configuration(以显示它们已被考虑)。 这是我的重现步骤。 $ docker build . -t socket-test $ docker run -p 8000:8000 -c 1024 -m 4096M –privileged –ulimit nofile=9000:9000 -it test-socket:latest /bin/sh #> DEBUG=* npm start 高达约980个连接,我会得到像这样的日志: Connected to Socket! socket.io:client writing packet […]

Python的socketIO客户端连接,然后断开连接

我想连接我的Python脚本到我的nodejs套接字服务器。 我的代码看起来像这样 – 节点js(相关部分) – //using socket.io@2.0.3 //PORT 8008 io.on('connection', function(socket){ console.log('connected'); socket.on('disconnect', function(){ }); socket.on('message', function incoming(message){ console.log(message); var data=JSON.parse(message); console.log(data); socket.broadcast.emit('message', message); }); }); python脚本(相关部分) – # using socketIO_client –0.7.2 socketIO = SocketIO('localhost', 8008) socketIO.wait() 我正在连接我的控制台,但之后,我得到错误(在Python方面) – Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/socketIO_client/__init__.py", line 353, in […]

SocketIoClientDotNet – Socket.IO客户端库有时会发出两个连续的事件,有时不会

我正在使用SocketIoClientDotNet – .Net的Socket.IO客户端库,我试图一个接一个地发出两个事件。 有时它发出这两个事件,有时它只发出第一个。 以下是我的代码: socketModel sm = new socketModel(); sm.CHANNEL = "channel_" + cHAT_MESSAGES.SENDER_ID + cHAT_MESSAGES.RECEIVER_ID; sm.DATA = chatMessageModelObj; string serializedData = Newtonsoft.Json.JsonConvert.SerializeObject(sm); var socket = IO.Socket(ConfigurationManager.AppSettings["socketlink"].ToString()); socket.On(Socket.EVENT_CONNECT, () => { socket.Emit("apimessage", serializedData); }); socket.On("apimessage", (data) => { Console.WriteLine(data); socket.Disconnect(); }); socketModel smSecond = new socketModel(); smSecond.CHANNEL = "messagecount_" + userID; if (updateCount == […]

在快速应用程序中使用Vue

我对构buildNode应用程序以及编写Vue是新手,但是我认为可以创build一个小程序来帮助我理解这两个问题。 这个想法很简单。 我试图创build一个可以在屏幕上显示的琐事游戏,用户可以使用手机来select主屏幕上出现的问题的答案。 正在使用Socket.io在服务器和客户端之间发送数据。 目前有两种路由: /和/host 。 连接到/host将生成一个唯一的ID(我将在响应中发送)并创build一个新的游戏实例,通过input主机屏幕上显示的ID来等待“玩家”join。 路线/ index.js exports.host = (req, res) => { let id = generateRandomNumber(1000, 9999); res.render("host", { type: "host", gameId: id }); }; exports.player = (req, res) => { res.render("player", { type: "player" }); }; function generateRandomNumber(min, max) { return Math.floor(Math.random() * (max – min + 1)) + min; […]

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 […]