Articles of socket.io

如何更新房间内所有客户端的套接字对象? (socket.io)

io.sockets.on('connection', function(socket) { socket.object = socket.id; socket.on('updateObject', function(data) { // How to update socket.object here for all clients? }); }); 怎么做?

将更新通知发送给使用socket.io的特定用户

以下是前端的代码,其中storeSelUserId包含用于发送消息的user_id – FYI – 节点版本1.1.0 // Socket Notification var socket = io('http://localhost:6868'); socket.on('connection', function (data) { socket.emit('send notification', { sent_to: storeSelUserId }); }); 以下是路由文件中的服务器代码 – var clients = {}; io.on('connection', function (socket) { socket.emit('connection', "Connection Created."); socket.on('send notification', function (sent_to) { console.log(sent_to); }); }); 在控制台sent_to显示user_id的数组。 现在成为socket.io的入门者,我坚持解决scheme,我如何发送消息到这些特定的用户ID。 我search,发现我需要推动每个用户的sockets,所以我改革它 – var users = []; io.on('connection', function (socket) […]

如何设置socket.io起源限制连接到一个url

我们有一个html网站和一个node.js服务器,它服务于该网站。 网站和服务器使用socke.io交换数据。 我们在文档中find了这个: 原点默认为 *:* 允许连接到Socket.IO服务器的原点。 我们的html.site位于http://questionexample.com/page1 。 只有本网站可能连接到我们的服务器(但每个人都可以连接到该网站)。我们如何设置起源?

在node.js中使用socket.io设置服务器 – 服务器SSL通信

我试图通过ssl连接使用socket.iobuild立服务器到服务器的链接。 这是我的例子: /** * Server */ var app = require('express')(); var config = require('./config'); var https = require('https'); var http = require('http'); var fs = require('fs'); var server = https.createServer({key: fs.readFileSync(config.ssl.key), cert: fs.readFileSync(config.ssl.cert), passphrase: config.ssl.passphrase}, app); //var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(config.port); app.get('/', function (req, res) { res.send('Server'); //res.sendfile(__dirname + '/index.html'); }); […]

如何构buildNode / Angular / Socket.io项目?

我正在使用AngularJS和Socket.io的项目。 我发现这个非常好的整合的例子。 这是项目结构: app.js –> app config bower.json –> for bower package.json –> for npm public/ –> all of the files to be used in on the client side css/ –> css files app.css –> default stylesheet img/ –> image files js/ –> javascript files app.js –> declare top-level app module controllers.js –> application controllers […]

(“消息”)处理程序上定义Socket.io的最有效的方法

Socket.io的例子都遵循这种模式 io.sockets.on("connection", function(mySocket){ mySocket.on("my message", function(myData){ … }); }); 在我看来,这将为每个连接创build一个新的callback函数。 假设每个套接字都以相同的方式对消息做出响应,那么为所有的套接字定义一次处理程序就没有更高的内存效率了: function myMessageHandler(data){ … } io.sockets.on("connection", function(mySocket){ mySocket.on("my message", myMessageHandler); }); 甚至这个: io.sockets.on("my message", function(mySocket, myData){ … }); 如果是这样,为什么Socket.io会推荐一种浪费内存的做法? 我们期望在“连接”callback的闭包中保持套接字的有状态variables吗?

Node.js之外的内存泄漏?

我刚修复了节点堆中的节点应用程序中的内存泄漏。 我已经用Google的Profiler描述了这一点,并设法修复了内存泄漏。 现在我的应用程序又运行了一段时间,我已经看到堆大小是相当稳定的。 没有内存泄漏了。 但是,当我检查我的服务器的免费RAM,我看到一个减less…当我重新启动我的节点服务器RAM是达到它的正常空闲RAM。 现在我已经听说Node.js可以保存对象和堆外的东西。 我认为这是什么导致这里的内存泄漏。 我怎样才能看到什么是占用内存? 不能真正地configuration任何东西,或者我可以吗? 我在用着: node.js:v0.8.18和socket.io:v0.9.13 我正在使用的一些其他节点模块是:nodetime,heapdump(虽然会删除这个),jquery,crypto,request和querystring。 一些图表: 免费的操作系统内存和使用的节点RSS和堆

未被捕获的错误:未能从“根”需要“socket.io”

我正在尝试使用与NodeJS新的socket.io 1.0,并在客户端我看到这个错误 – “未捕获的错误:未能要求”从“根”“socket.io”,它看起来是错误的我的客户端path,但path已与0.9。 编辑*这似乎是与socket.io 1.0的问题,有一个小的修复可用于此,虽然我无法得到它的工作。 所以,我回到了0.9。

使用Nodejs + SocketIO时丢弃传输错误

我正在构build一个android聊天应用程序。 我在服务器端使用nodejs ,并试图使用这个实现socketIO的android客户端。 首先,客户端向服务器回应“hello”,服务器将其回送给客户端。 这工作正常。 现在有一个Button ,当按下时, EditText的文本回传给服务器。 服务器应该回显文本回到客户端。 但是,一旦文本回显到服务器,我就会在服务器端Discarding transport错误,并且没有任何回应。 客户端无法进一步回应。 这些代码有什么问题? 服务器 var http = require('http'),fs = require('fs'); var app = http.createServer(function (req, res) { res.end(); }).listen(8000, '127.0.0.1'); var io = require('socket.io').listen(app); io.sockets.on('connection', function(socket) { socket.on('echo', function(data) { socket.emit('echoback', data); }); }); 客户 package com.jack.pri; import java.net.MalformedURLException; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; […]

socket.io:将敏感数据存储在握手对象中是否安全?

我想在握手对象中保存一些用户敏感数据。 服务器端代码如下所示: io.configure(function (){ io.set('authorization', function (handshakeData, callback) { var objAuthorized = IsUserAuthorized(handshakeData); if (objAuthorized.authorized) { handshakeData.password = objAuthorized.password; // Store sensitive data inside handshake handshakeData.email = objAuthorized.email; // Store sensitive data inside handshake callback(null, true); } else { callback(null, false); } }); }); io.sockets.on('connection', function (socket) { socket.on('do something', function() { if DoSomething(socket.handshake.password, socket.handshake.email) […]