Tag: socket.io

实时访问者与nodejs&redis&socket.io&php

我对这些技术不熟悉。 我想为我的网站获得每个产品的实时访问者。 我的意思是像“X用户看这个产品”的通知。 每当用户连接到一个产品柜台将增加本产品,当断开计数器将减less只为这个产品。 我试图search大量的文件,但我感到困惑。 我正在使用Predis Library for PHP。 我所做的事可能总是错的。 我不知道在哪里把createClient,何时订阅和何时取消订阅。 我已经做了什么: 在产品详细页面上: $key = "product_views_".$product_id; $counter = $redis->incr($key); $redis->publish("productCounter", json_encode(array("product_id"=> "1000", "counter"=> $counter ))); 在app.js中 var app = require('express')() , server = require('http').createServer(app) , socket = require('socket.io').listen(server,{ log: false }) , url = require('url') , http= require('http') , qs = require('querystring') ,redis = require("redis"); […]

Socket io在重新连接时连接到多个套接字

我有一个应用程序,我使用Node js,socket io和redis实现了通知。 在那里,我已经成功地在节点js中configuration发布者和订阅者。 使用套接字我可以在客户端上显示消息,如实时。 我的devise是1个发布者发布到许多频道,每个用户只能听他自己的频道。 我发布到channel1和channel2,并且当用户只听他们的频道,他们只得到他们各自的消息一次。 直到现在,它工作得很好,顺利。 但在这里我的问题开始。 当互联网离线时,它试图重新连接,当它再次build立连接时,在每一次发布时,它开始订阅两次,并且由于这些信息显示两次。 我的代码是这样的服务器用户端 io.sockets.on('connection', function (socket) { var channelName = "channel"+socket.handshake.query.ch; console.log("======================================================================="); console.log("Connected to client – ["+socket.id+"] for ["+channelName+"]"); console.log("Transport Method – ["+io.transports[socket.id].name+"]"); console.log("======================================================================="); try{ var client = redis.createClient(); client.on("connect",function(){ client.subscribe(channelName)?console.log("channel subscribed to {"+channelName+"}"):console.log("Not Subscribed to {"+channelName+"}"); client.on("message", function(channel,message){ console.log("======================================================================="); console.log("Got message ["+message+"] in ["+channel+"]"); socket.emit("notification"+channel, { […]

Socket.io在每个发射失败

所以我正试图将我的项目从开发转移到生产,使用modulus.io进行托pipe。 问题是,每当我尝试在服务器< – >客户端连接之间发送或接收数据时,应用程序在服务器端失败。 这是我得到的错误: /mnt/data/2/node_modules/socket.io/lib/parser.js:75 data = JSON.stringify(ev); ^ TypeError: Converting circular structure to JSON at Object.stringify (native) at Object.exports.encodePacket (/mnt/data/2/node_modules/socket.io/lib/parser.js:75:19) at Socket.packet (/mnt/data/2/node_modules/socket.io/lib/socket.js:212:21) at Socket.emit (/mnt/data/2/node_modules/socket.io/lib/socket.js:368:15) at null.<anonymous> (/mnt/data/2/server/*******/*******.coffee:36:52) at wrapper [as _onTimeout] (timers.js:252:14) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 这是我在debugging的地方: 这是错误的地方,虽然有时候在其他地方,这取决于谁试图首先发出一个事件: Vent.socket?.emit('event', @) Socket.io在localhost上按预期工作 在失败之前,Socket.io成功连接到客户端(来自chrome开发工具): XHR finished loading: "http://********.onmodulus.net/socket.io/1/?t=1372727710817". socket.io.js:1659 XHR finished loading: […]

Socket.io限制数据包的数量

我正在使用socket.io和HTML5文件API实际上在文件传输系统上工作。 https://github.com/xblaster/Nodjawnloader(stable分支) 我的主要问题是巨大的文件。 Socket.io将所有数据包发送给一个巨大的传输块,并且Google Chrome浏览器的JavaScript VM只收到大约70MB的数据包时就会崩溃。 我可以限制用于xhr-poll或jsonp调用的socket.io块吗?

实时更新到NodeJS(MVC,Express),Mysql和Socket.io应用程序

我正在尝试使用Express框架和MySQL作为我的后端数据存储,使用带有MVC布局的NodeJS创build实时Web应用程序。 我遇到的问题是,我找不到任何好的示例或教程,关于如何使用Socket.io (或任何其他Web套接字平台从数据库实时传递信息到Web应用程序。问题是在特定的表上将任何新的MySQL更新传递给特定的表,以便如果通过第二个客户端连接将新的信息添加到数据库中,只要添加了信息,它就会在第一个客户端连接上更新。 有没有人有任何想法如何获得socket.io(或另一个websocket连接协议)和mysql一起工作来实现这一目标? 任何代码示例或指向我的一些网站有这个主题的文档,将不胜感激。 谢谢!

如何在node.js上集成redis-sentinel-client和socket.io?

如何将socket.io和主从Redisconfiguration与自动故障转移function集成?

什么可以限制我的Socket.IO并发连接在同一个系统?

我有一个NodeJS客户端应用程序尝试使用socket.IO与一个NodeJS服务器应用程序进行超过10,000个新的连接。 两者都在同一个盒子上运行,并且客户端能够在服务器停止接受额外的连接之前创build233个连接。 没有错误,只是等待第234个连接的客户被接受。 我认为这可能是最大文件开放限制,但我已经修改了这个限制: cpu unlimited unlimited filesize unlimited unlimited data unlimited unlimited stack 8388608 67104768 core 0 unlimited rss unlimited unlimited memlock unlimited unlimited maxproc 709 1064 maxfiles 12000 12000 以下是我如何连接: var socket = io.connect('http://localhost:3001', {'force new connection': true}); 任何想法可能会限制我?

1000连接上100%的CPU使用率 – Node.js,socket.io,集群和Redis …

我的聊天工作在24个线程(2个6核心X5650 @ 2.67GHz)…如果有大约1000个连接CPU使用率(每个线程)增长到80-100%….我认为有什么是我的错代码…节点不应该只有1000个连接产生这样的负载。 你可以给我一些关于在哪里看的想法 我的代码: express = require('express') http = require('http'); cluster = require("cluster"); numCPUs = require("os").cpus().length, port = 55678; userCount = 0; interv = false; RedisStore = require("socket.io/lib/stores/redis"), redis = require("socket.io/node_modules/redis"), pub = redis.createClient(), sub = redis.createClient(), client = redis.createClient(), counter = redis.createClient(); counter.set('count',0); client.set('searching',0); client.del('freeusers'); if (cluster.isMaster) { for (var i = 0; […]

nodejs集群socket.io表示应用程序

var httpsport = 8080, // used for httpsapp httpport = 8000, // used for httpapp numCPUs = require('os').cpus().length; var credentials = { key: fs.readFileSync('./cert/client.key'), cert: fs.readFileSync('./cert/client.crt'), requestCert: true }; var cluster = require('cluster'), socketStore = require('socket.io-clusterhub'); var redis = require('redis'); var redisClient = redis.createClient(); if(cluster.isMaster) { for(var i=0; i<numCPUs; i++) { cluster.fork(); } } else […]

SEC7111:使用IE9和Socket.IO来危及HTTPS安全

我使用的是一个NodeJS Web应用程序的Socket.IO。 该页面在SSL上提供,我的连接如下所示: var socket = io.connect('/'); 这几乎适用于除IE9以外的任何浏览器。 在IE9(在Windows 7中),我在控制台中得到这个错误: SEC7111: HTTPS security is compromised by https://app.mysite.com/socket.io/1/htmlfile/m9Zjap56uyEbx4eptg27?t=1375727354386 套接字永远不会连接。 SSL的types是SNI,运行代码的页面在同一个子域中。 例如: https : //app.mysite.com/project/show/12345 我也尝试了以下,但没有什么区别: var socket = io.connect('/', { secure: true }); 任何想法,我怎么能使它在IE9上工作?