Articles of 套接字

发射到单个客户端套接字io 1.3.2

我已经在这里看了几个答案,但我认为他们指的是旧版本的socket.io,因为他们的解决scheme没有为我工作。 我正在浏览器中获取数据 io.emit('update', data) 但它发射给所有的客户,所以当我去到相同的URL时,相同的数据显示在多个窗口中。 是否需要在连接时将客户端ID存储在某个地方,还是可以在排放之前将其还原? 请具体说明。 我尝试了几个其他的解决scheme,但我得到了很多ReferenceError'id'没有定义或套接字而不是套接字。 服务器设置和连接: var app = express(); var server = require('http').createServer(app) var io = require('socket.io')(server) app.get('/aPath', function (req, res, next) { res.writeHead(200) var data = { "val1": req.query.val1, "val2": req.query.val2, "val3": req.query.val3, "val4": req.query.val4, "val5": req.query.val5, "val6": req.query.val6, } /*console.log(io.sockets.id)*/ //io.to(io.sockets.id).emit('update', data) //io.sockets.socket(id).emit('update', data) io.emit('update', data) res.end("OK") }) io.on('connection', […]

在服务器和任意NodeJS进程之间创buildWeb套接字stream

在localhost:5000上运行服务器,我想通过web套接字从另一个NodeJS进程连接到该服务器。 从我的networking套接字的经验,我总是需要服务器对象来创build一个Web套接字服务器。 var http = require('http'); // create http server var server = http.createServer(function(req, res) { // serve files and responses … }); // Socket.io server listens to our app var io = require('socket.io').listen(server); // Send current time to all connected clients function sendTime() { io.sockets.emit('time', { time: new Date().toJSON() }); } // Send current […]

找出一个套接字是否为null

如何找出一个套接字= null或未定义 我想要实现的例子 if(socket.username == NULL){ givenulldata() } 这是我的sockets删除断开连接,但有时用户还没有真正离开网站,我不想惹恼他们请刷新页面的东西,当它不需要。 由于删除笔记本电脑上的电池没电或无线连接断开和重新连接(移动设备更常见的问题)等 socket.on('disconnect', function(data){ if(!socket.username) return; delete username[socket.username]; });

什么时候使用http over web套接字更合适?

我使用的是带有MEAN堆栈的Socket.IO,它对于低延迟和双向通信非常好,但是如何将它用于相对静态的数据以及dynamic性呢? 我的假设是,发送更多dynamic内容会更加方便。 这就是说,一旦套接字连接build立起来,通信的数量有多相关呢? 在用户与应用程序直接交互的过程中,当连接不断build立时,是否有一段时间更适合使用http? 谢谢!

根据客户端POST表单的开关切换套接字

在我们的数据处理API控制器中,根据客户端填写或未填写 POST FORM的POST FIELDS,我们有CASE SWITCH套接字。 问题是:什么是最简单的方法来确定正确的CASE根据张贴字段。 假设我们在客户端POST FORM上有六个不同的字段 计算总共64个的所有可能性 在Sails中,我们正在寻找最有效的方式来标记每个组合 ,以便切换大小写,然后在API控制器中路由每个组合 。

使用Node.js和Socket.IO单击jQuery函数

我已经创build了一个简单的聊天应用程序推荐(工作正常),但我很难找出如何启动与Socket.IO跨networking套接字的jQueryfunction。 例如,我有一个button来点击: <button id="button"> Click me! </button> 我希望我的button在被点击时执行一个函数: $("button").click(function() { doSomething(); }); 这里是我在客户端的一个例子 var socket = io.connect('http://localhost:3000'); function doSomething() { $('body').css({ background: "red" }); } 这是我在服务器端(我的server.js文件) – 我认为这可能导致部分问题: var io = require('socket.io'), connect = require ('connect'); var app = connect().use(connect.static('public')).listen(3000); var commands = io.listen(app); commands.sockets.on('connection', function (socket){ // Possibly insert handler here? }); 以防万一我不明确的目的 – […]

套接字io内的callback

当执行数据需要很长时间时,我遇到了socket问题。 例如: socket.on('start', function(input){ var output = foo(input); //taking a very long time to get data, networking etc. console.log("this is ending", output); socket.emit('end',output); }); 看来,如果执行foo(input)需要很长时间,nodejs实际上会首先发出输出,而它仍然是空的。 我怎样才能确保在排放之前先完成执行? 我这样修改 socket.on('several',function(meterIDArray){ console.log("I have receiever meterIDArray",meterIDArray); meterIDs = meterIDArray.meterIDs; foo(meterIDs,function(Datasets){ console.log("This is datasets",Datasets); socket.emit('Datasets',Datasets); }); }); 我像这样修改了我的foo function foo(meterIDs,callback){ //this is what I meant by a long call. var […]

带有多个命名空间的Socket.io?

我有一个路由,听一个特定的路由ID。 /** * Chat app routes. */ app.get('/games/:id', gameChatController.chatRoom); 根据路由id我可以确定聊天是什么游戏。 我的问题是如何使用此传递到socket.io? 斌/ WWW /* * setup socket.io, and socket-session */ var socketIO = require('socket.io'); var io = socketIO(server); var SessionSocket = require('session.socket.io'); var sessionSockets = new SessionSocket(io, app.sessionStore, app.cookieParser); var setEvents = require('../events'); setEvents(sessionSockets); 事件/ index.js 'use strict'; var redis = require('redis'); var sub = […]

Socket.io – 无法从客户端发送消息到服务器端

我有两个文件 – 的index.html index.js 在index.html中 ,我有一个文本框。 我想在文本框上显示input到控制台的消息(node.js的命令提示符)。 在index.html中 ,我写了这个 – <script> var socket = io(); $('form').submit(function(){ socket.emit('chat message', $('#m').val()); $('#m').val(''); return false; }); </script> 在服务器端,在index.js中我使用了这个 – socket.on('chat message', function(msg){ //here is the listener to the event console.log('message: ' + msg); }); 但是,消息没有显示在控制台中。 我的代码有什么问题? 如果需要请参考下面的文件。 index.js var app = require('express')(); var http = require('http').Server(app); var io […]

使用TCP进行跨进程的内存共享

我一开始就没有使用Redis或Memcache或其他内存存储系统,因此在nodejs上犯了一个错误。 现在,重写所有的东西来调整和关联这些API中的代码已经太迟了。 不过,我最近刚刚发现了分叉过程,以及它们有多大的益处。 特别是因为我正在做一个游戏服务器。 我nodejs的问题是: 内存不在nodejs内核之间共享 ..直到我find一个名为Amensia的TCP内存共享模块。 nodejs ,我对于nodejs和tcp有一些疑问: 1) TCP数据包的最大大小约为64K,所以使用这个模块时我只能共享64K的数据? 2)我使用全局的GAMES和users对象来存储玩家数据。 当玩家在地图上移动(x,y位置)和其他动作时,这些对象被更新。 通过TCP发送所有这些数据是否会导致瓶颈?