Tag: socket.io

在Socket.io中排除排除

有没有办法通过socket.io发送消息,同时排除一些套接字ID? 我知道房间的存在,但这对我来说是不可能的。 如果我所尝试的是不可能的,那我应该怎么做呢? a)迭代我想发送消息的所有用户(实际上,除1之外的所有用户),并为每个套接字发出一个消息 要么 b)只要把信息发送给每个人,并在客户端做一些哈希来“忽略”这个信息。 编辑:我不能做广播,因为消息是从服务器端生成(所以没有客户端交互)。

如何处理哪个subprocess获得socket.io套接字句柄

我正在使用Socket.io和集群。 我需要做的是能够制作多个subprocess,并根据需要发送特定的[socket.io]套接字给每个进程。 当我尝试发送[socket.io]套接字作为句柄时,目前(见下面的代码)我得到一个exception。 我的代码下面没有它(因为我想获得最基本的例子工作),但我想要做的是让客户端连接,并告诉它什么过程去一些消息。 所以一个客户端会发送一个包含一些数据的'init'消息,并且基于这个数据,我将[socket.io]套接字转发给一个特定的进程。 这是我原来的计划。 我知道我可以从每个subprocesssocket.io侦听,但是当一个客户端只连接其中一个进程接收它。 我的两个问题是: 有没有办法发送一个socket.io套接字到subprocess? 如果没有,是否有另一种方式来决定哪个进程得到处理? (你可以在每个进程中使用不同的授权函数,如果一个进程不接受另一个进程可以的套接字) var cluster = require('cluster'); if (cluster.isMaster) { var io = require('socket.io').listen(80); var cpuCount = require('os').cpus().length; var children = []; for (var i = 0; i < cpuCount; i += 1) { children.push(cluster.fork()); } //Master Process is listening for all connections io.sockets.on('connection', function (socket) { […]

socket.io以及restify REST API

我已经使用restify.js实现了REST API。 它被部署在heroku上。 现在我想添加服务器和用户(移动应用程序)之间的实时通信。 我的想法是发送事件给客户端,告诉他们有什么数据可用(他们可以调用普通的REST API来获取这些数据)。 我在我的应用程序中使用redis PUB / SUB来广播事件。 所以我非常简单的代码如下所示: var redisClient = require('./redis-client'); var app = restify.createServer(); app.get('/give-me-data',function(req,res,next){ res.json('{ data: 'abcdef' }); }); redisClient.on('message',function(channel,message){ if(message=='data-available') { // now I want to emit event to mobile clients through socket.io } }); redisClient.subscribe('data-available-channel'); app.listen(process.env.PORT); 如何将socket.io添加到这样的应用程序让客户端(移动应用程序)连接到它,并听取事件?

Node js – 使用Express提供大量文件

我正在使用冲击引擎和套接字IO来编写2D游戏。 我决定使用快递以及网站本身。 影响我需要从多个目录服务十几个文件(js,css和图像)。 我如何使用快递服务? 提前致谢。

Node.js服务器端连接到Socket.io

我有一个前端应用程序和后端应用程序的Node.js应用程序,后端将pipe理列表,并将更新推送到前端应用程序,调用前端应用程序将触发列表更新,以便所有客户端接收正确的列表数据。 问题是在后端,当我按下button时,我执行一个AJAX调用,并且该AJAX调用将执行下面的代码(修剪了一些操作): Lists.findOne({_id: active_settings.active_id}, function(error, lists_result) { var song_list = new Array(); for (i=0; i < lists_result.songs.length; i++) { song_list.push(lists_result.songs[i].ref); } Song.find({ '_id': {$in: song_list} }, function(error, songs){ // DO STUFF WITH THE SONGS // UPDATE SETTINGS (code trimmed) active_settings.save(function(error, updated_settings) { list = { settings: updated_settings, }; var io = require('socket.io-client'); var socket = […]

socket.io连接的多个握手

我正在写一个移动应用程序的服务器,并select使用socket.io从服务器到应用程序的推送通知,但我无法设置socket.io 目前在io.connect(服务器:端口)上启动了无数的握手stream, debug – client authorized info – handshake authorized HXtC1UPzcsEzO8X7x2B1 debug – client authorized info – handshake authorized aE7hMGDpp5InO1UWx2B2 debug – client authorized info – handshake authorized GBx_3n-8Lvbuo4QJx2B3 debug – client authorized info – handshake authorized tOEl0F5wNlh4xkn1x2B4 debug – client authorized info – handshake authorized K55Oit22yN9JDWxhx2B5 debug – client authorized … 我正在使用socket.iotitanium的应用程序的客户端,我不知道是哪一端导致此连接问题。 客户: var […]

Node.js,socket.io和mongojs – 使用socket.iologin表单

我目前使用mongojs在node.js上创build一个小型聊天应用程序,我有一个用户username, password and name字段的mongo集合。 应用程序使用socket.io实时发送数据,然后对用户进行身份validation,并在身份validation正确的情况下让他使用该应用程序。 但是,我不想以纯文本发送密码,有什么方法在客户端encryption密码? 或者有更好的方法来做到这一点? 我想在单独的页面上使用它,但我需要在单页上执行此操作。 这是我的客户端代码: function loginUser(){ console.log("Login User"); username = $('#login-username').val(); password = $('#login-password').val(); //VALIDATIONS socket.emit('auth-user', {"username": username, "password": password}); return false; }

如何用开/关button来控制socket.io

我真的希望有人能够帮助我在这里。 我有这个非常简单的应用程序(网站)有四个框,以便每个框被点击时,它的背景颜色更改为红色,还有一个重置button,将框重置为白色背景。 现在,一切都发生在socket.io上,所以我能够在不同的浏览器(镜像)中独立地看到每个更改(背景颜色),这完全可以工作。 理想情况下,我想实现一个开/关button,所以当它打开时,每个浏览器都会发生更改(镜像),但是当它处于closures状态时,只会在与我交互的浏览器中进行更改。 我真的不知道如何实现这样的解决scheme,以控制开/关。 我真正需要的是打开2个浏览器,当你点击“#onOff”第二个浏览器不应该接收套接字,但第一个浏览器仍然应该能够改变div的颜色。 这里是我的代码如下: HTML <div class="box" id="one"></div> <div class="box" id="two"></div> <div class="box" id="three"></div> <div class="box" id="four"></div> <div id="reset">RESET</div> app.js var express = require('express') , jsondata = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', […]

使用NodeJS和SocketIO在Websockets上提供图像

我试图用NodeJS和SocketIO开发一个非常简单的图像服务器。 我正在处理的项目需要我在加载页面(客户需求)时加载数百个图像。 目前,通过使用HTML“img”标签对每个图像进行HTTP请求。 与HTTP或Ajax相比,WebSockets的延迟和整体效率都有所降低,我希望通过websockets发送图像来提高性能。 不幸的是,使用NodeJS从服务器的文件系统中读取图像,并通过使用SocketIO的websockets发送图像比通过Apache服务的传统HTTP请求慢得多。 以下是我的服务器代码: var express = require('express'), app = express(), http = require('http'), fs = require("fs"), mime = require('mime'), server = http.createServer(app), io = require('socket.io').listen(server); server.listen(151); io.sockets.on('connection',function(socket){ socket.emit('connected'); socket.on('getImageData',function(file,callback){ var path = 'c:/restricted_dir/'+file; fs.readFile(path,function(err,data){ if (!err){ var prefix = "data:" + mime.lookup(path) + ";base64,"; var base64Image = prefix+data.toString('base64'); socket.emit('imageData',data,callback); } }); }); […]

连接框架和socket.io有什么不同?

我是新来的node.js,所以我有一些关于连接框架和socket.io的问题: 有什么不同? 我很困惑。 我应该使用连接fw与socket.io或只是使用socket.io?