Tag: socket.io

发送socket.io实例来表示路由

我正在尝试创build一个nodejs应用程序,它将使用他们的API在各种网站中进行search。 一旦从使用socket.io的API接收结果,结果将被发送到客户端。 然后前端将使用jQuery添加这些结果。 什么是实施这个最好的方法? 到目前为止我已经尝试过: 示例代码1 起初,我创build了一个快递中间件,将套接字添加到请求中 – var socketMiddleWare = function(req, res, next){ io.on('connection', function(socket){ console.log(io.engine.clientsCount + " clients connected."); req.socket = socket; socket.on('disconnect', function(){ console.log(io.engine.clientsCount + " clients after disconnec."); }); }); next(); }; 然后将这个中间件添加到我的路线 – app.use('/users', socketMiddleWare, users); 它的工作原理,但问题是每次用户刷新页面时都会创build多个事件监听器。 示例代码2 所以然后我试了(示例代码) io.on('connection', function(socket){ console.log("user connected"); global.socket = socket; socket.on('disconnect', function(){ console.log("disconnect"); }); […]

Socket.IO:用大量波动的数据更新客户端的最有效的方法

想象一下Agar.io. 与聊天应用程序不同,随着玩家在地图上移动,用户(或玩家)和其他环境对象的列表将不断变化。 那是因为每个客户端都不能收到关于每个对象的更新,因为地图太大,滞后太多。 那么使用Socket.IO更新客户端的下列哪种方法会更高效: 发送一个包含数据的环境数组,replace每个客户端上的本地数组。 当对象在播放器视野中出现/消失时发送单个消息,并用对象修改本地数组对象。 如果有比上述两种更好的方法,请概述一下。

Socket.io无法访问与Express相同的会话

我试图使用express和socket.io共享会话,我已经得到它曾经工作,但不知何故,它不会工作了。 我跟着这个链接如何与Socket.IO 1.x和Express 4.x共享会话? 并访问了socket.io上的会话,但它不是以某种方式相同的会话。 看来每个socket.io连接都会产生新的会话。 performance req.session.test =='有些值' Socket.io socket.request.session.test ==未定义 我是否错过了一些东西,或者是这些模块中的一些错误? – 编辑 – 编辑 – 编辑 – 发现是什么原因造成的问题是,当我设置cookie以下 cookie: { domain: '.local.fi' } 我需要跨子域有相同的会话,我怎么能做到这一点,因为许多页面成功? – 编辑 – 编辑 – 编辑 – 的package.json { "dependencies": { "express": "^4.13.4", "express-session": "^1.13.0", "socket.io-session": "^0.0.5", "express-socket.io-session": "^1.3.1", "socket.io": "^1.4.5" } } 开始我的index.js 'use strict' var express […]

NodeJS + socket.io我需要快递吗?

简单的问题。 我使用phaser和socket.io构build在线浏览器游戏。 现在我可以告诉我会明确地使用socket.io,但expression什么呢? 一旦我启动服务器,我还需要做什么? 我觉得我需要的只是像HTTP服务器的3行代码。 任何意见我还会用什么来expression?

无法读取socket.io中未定义的属性

我得到这个错误(未定义'上')。 这是我的服务器代码 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.send('Hello'); }); io.on('connection', function(socket){ console.log('a user connected'); io.emit('EPSON', {'name':'Lalit'}); console.log("Event Emitted successfully"); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); Here is my client code: var io = require('socket.io-client'); //var socket = io.connect('http://printserverproject-happylaundry.rhcloud.com:8000'); var socket = io.connect('http://172.20.20.240:3000'); socket.on('connect', function(sock) […]

pipe理多个TCP套接字nodejs

我有一个这样的数组: var exports = module.exports = {}; var net = require('net'); exports.config = [ { ip: "127.0.0.1", id: 1, socket: new net.Socket(), data: "", }, { ip: "192.168.5.242", id: 2, socket: new net.Socket(), data: "", } ]; 我试图用这个代码连接每个这个项目与TCP套接字: for(var key in tornelli.config) { tornelli.config[key].socket.connect(4000, tornelli.config[key].ip, function() { console.log('CONNECTED TO: '+tornelli.config[key].ip); }); tornelli.config[key].socket.on('data', function(data) { ……….. […]

Socket.io和node.js,不能理解内存使用情况

我目前在我的服务器上使用socket.io v1.4.2和node.js v0.10.29。 我试图跟踪我的应用程序中的内存泄漏,我不知道,但我认为socket.io是我的问题的一部分。 所以这里的服务器代码(演示例子): var server = require ('http').createServer (); var io = require ('socket.io')(server); io.on ("connection", function (socket) { socket.on ('disconnect', function (data) { /* Do nothing */ }); }); 第一步:内存:58Mb 第2步:我创build了很多客户端(〜10000),内存:300 Mb 第三步:closures所有的客户,等待GC的工作 第四步:我看看我的记忆:100 Mb:'( 步骤5:与步骤2和3相同 第6步:内存160Mb … 等等,记忆不断增长。 我认为GC是懒惰的,所以我重试了下面的代码: setInterval (function () { global.gc (); }, 30000); 我开始我的app.js: node –expose-gc app.js […]

将鼠标事件广播到使用node.js和socket.io连接的所有节点

有没有办法将鼠标事件,如mousedown,mouseup和mousemove广播到连接到nodejs服务器的所有节点? 我试图复制某些(x,y)坐标的事件。 有什么办法可以实现吗?

从另一个事件节点js发射事件

我正在尝试在admin.html中获取新的连接用户列表 client.html(客户端loginauthentication) admin.html(通知新用户join) server.js app.get('/', function(req, res){ res.sendfile('client.html'); }); app.get('/admin', function(req, res){ res.sendfile('admin.html'); }); io.on('connection', function(socket){ socket.on('login', function(msg){ socket.emit('notification', 'new user joined'); }); socket.on('notification', function(msg){ console.log(msg); }); }); 在这里,我可以尝试从login事件发出通知事件,但它没有打印任何东西在控制台,从client.html login事件获取触发器。 当我从client.html尝试这个 <script src="/socket.io/socket.io.js"></script> <script src="http://code.jquery.com/jquery-1.11.1.js"></script> <script> var socket = io(); $('form').submit(function(){ var a= $('#username').val(); var b= $('#usermail').val(); var c= $('#reason').val() socket.emit('login',{username:a,usermail:b,reason:c}); socket.emit('notification','new user joined'); }); […]

使用node.js,node-formidable和socket.io向客户端发送上传进度更新

我的代码显示了一个简单的上传表单( node-formidable和node.js )。 我正在使用socket.io更新客户端上的当前上传文件进度。 我的问题是,我目前正在向每个客户端发送进度更新。 例如,如果我用clientA开始上传,然后用clientB连接到网站,clientB将看到与clientA完全相同的进度条。 通常情况下, clientA和clientB应该是不同的,各自的进度条只与它们各自的上传链接。 这是我的app.js文件 // Required modules var formidable = require('formidable'), http = require('http'), util = require('util'), fs = require('fs-extra'); // Path to save file, server side var savePath = "./uploadedFiles/"; // Loading index.html var server = http.createServer(function(req, res) { // Form uploading Process code //Upload route if (req.url == […]