Tag: socket.io

socket io集群性能

经过几次尝试扩展我的聊天套接字io应用程序时,我试图build立在同一台机器上超过2k websocket连接时,打到某种types的墙。 这个数字似乎有点低,考虑到我的本地机器是一个8核6千兆的RAM,在testing过程中只有一半的内存和CPU使用。 作为一个noob到websocket和linux我可能还没有完美configuration我的服务器到目前为止,我提出了最大数量的打开的文件为560000和最大数量的开放套接字(maxconn)为60000没有效果。 所以我的问题是: – 在使用socket io在本地创build的连接数是否有限制? – 您能够使用这种设置在单台机器上build立多less个连接? – 有没有其他的Linux设置来调整,以提高性能? 这里是我用于演示的代码示例 cluster = require('cluster') ,http = require('http'); //tell express how to parse post data /* app.use(express.json()); app.use(express.urlencoded());*/ //server.listen(9020); if (cluster.isMaster) { process.on('uncaughtException', function (err) { console.log(err) }); var numberOfCPUs = require('os').cpus().length; for (var i = 0; i < numberOfCPUs; i++) { cluster.fork(); } […]

nodejs socket.io在函数循环内部发射

我想通过循环内的socket.io发射。 为此,我做了一个很好的触发器,但是在每个触发器上我调用了socket.emit,并且只有第一个发射器工作。 这里是服务器代码: var server = require('http').createServer(handler); var io = require('socket.io')(server); var fs = require('fs'); var ee = require('events').EventEmitter; var trig = new ee(); server.listen(8080); function handler(req,res){ fs.readFile('./index.html', 'utf-8', function(error, content) { res.writeHead(200, {"Content-Type": "text/html"}); res.end(content); console.log('page affichée'); }); } io.on('connection',function(socket){ socket.on('run',function(v){ run(v); }); trig.on('node',function(i){ io.sockets.emit('node',i); console.log(i); }); }); function run(v){ for(i=0;i<v;i++){ trig.emit('node',i+1); } } […]

原始缓冲区数据在audio标签中播放

我正在制作一个Web应用程序,在这里我使用套接字IO将用户麦克风audio传输到NODE JS服务器,然后重新传播数据。 <Buffer 59 00 76 00 92 00 a0 00 aa 00 b1 00 aa 00 92 00 7c 00 74 00 75 00 7e 00 8f 00 9d 00 9c 00 98 00 94 00 85 00 7c 00 8a 00 8f 00 6c 00 4f 00 5d 00 67 00 48 …> […]

socket.io查询参数不起作用

我有这个代码: var ss = io('/secure', { query: 'token='+string }); 它用于将查询parameter passing给以下代码作为socket.handshake.query访问的服务器: io.of('/secure').use(function(socket, next){ // *** console.log( socket.handshake.query ); // validate token next(); }); 但现在它不工作,并且console.log的输出不包括令牌属性: { EIO: '3', transport: 'polling', t: '1410465157747-0' } 我也尝试改变我的语法,我已经看到其他网上的语法… var ss = io('/secure', { query: { 'token': string } }); 这不会将查询属性添加到socket.handshake.query … 请帮忙! 顺便说一句我正在使用socket.io 1.1.0

带有SSL的node.js服务器socket.io-client

我尝试通过socket.io来设置两个node.js服务器之间的通信。 节点服务器使用SSL,但我不明白它运行。 我没有得到任何反馈,它接近这个: Node.js socket.io-client connect_failed / connect_error事件 这是行不通的。 没有反应。 var clientio = require('socket.io-client'); console.log('Trying stuff …'); // the channel does not exist var socket = clientio.connect( 'http://localhost:4000/news' ); // I expect this event to be triggered socket.on('connect_failed', function(){ console.log('Connection Failed'); }); socket.on('connect', function(){ console.log('Connected'); }); socket.on('disconnect', function () { console.log('Disconnected'); }); 但如果我尝试: // Bind […]

Node.js,socket.io:接收来自每个socket.io调用的重复请求

第一次尝试使用node.js,像其他人一样创build一个简单的实时聊天应用程序。 一直有问题,最后〜2小时找不到解决scheme/原因。 我最初在我的聊天应用程序中遇到了这个问题,对服务器的每一个请求都会被复制,所以消息会出现两次,在控制台中,连接的服务器会logging两次。 我已经实施了一些解决scheme,因为在这里有几个类似的问题,但没有解决问题。 我试图在一个新的testing应用程序重新创build问题,看看我能不能find我做错了什么。 服务器代码 var express = require('express'); var routes = require('./routes'); var path = require('path'); var http = require('http'); var app = module.exports = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); app.set('port', 1620); app.use(express.logger('dev')); app.use(express.methodOverride()); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); app.set('views', __dirname + '/views'); app.engine('html', require('ejs').renderFile); if ('development' == app.get('env')) { app.use(express.errorHandler()); […]

Socket.io – 方法离开不起作用

我在我的网站上创build一个在线聊天。 几乎一切都可以:客户可以join一个房间,他可以和房间里的其他客户交谈,但他不能离开。 事实上,当一个客户试图断开一个房间,它不起作用。 这是我的服务器端代码: io.sockets.on('connection', function (socket) { // connection socket.on('room', function(room) { socket.join(room); console.log('room join :'+room); }); // some actions (message, etc) // disconnection socket.on('leave', function(room) { socket.leave(room); console.log('room quit :'+room); }); }); 我在我的控制台上得到“房间退出:xxx”,但是当我试图在房间里谈话时,仍然有效! 我的客户不能从房间断开。 出了什么问题?

带有ssl和Access-Control-Header的socket.io / node.js

我设置了一个节点服务器,并在激活ssl(官方,非自行分配的证书)时收到错误消息。 错误消息: XMLHttpRequest cannot load https://servername:8081/socket.io/… No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://servername' is therefore not allowed access. results:1 但实际上,我在.htaccess文件中包含了以下代码: <IfModule mod_headers.c> Header set Access-Control-Allow-Origin * Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT" </IfModule> apache标题模块被安装。 我的服务器: var fs = require('fs'); var https = require('https'); var express = require ('express'); var options = { key: […]

有什么不同? .on“连接”与“连接”

我很难理解之间的区别: io.on('connection', function (){ }); io.on('connect', function,(){ }); 可能是一个相当原始的问题,但我无法find明确的文件。 很想学习差异。

无法销毁node.js中的Twitterstream

我正在尝试与Socket.io一起使用NPM twitter。 stream.destory()函数不起作用。 var util = require('util'); var twitter = require('twitter'); var twit = new twitter({ consumer_key: '', consumer_secret: '', access_token_key: '', access_token_secret: '' }); var currentTwitStream; hashtags = []; module.exports = function (io) { io.sockets.on('connection', function (socket) { console.log('A new user connected!'); socket.on('data', function(data){ hashtags.push('#' + data.hashtag); hashtags.forEach(function(entry) { console.log(entry); }); if(currentTwitStream) currentTwitStream.destroy(); twit.stream('statuses/filter',{track:hashtags.join(',')},function(stream){ […]