Tag: socket.io

在多个文件中使用socket.io

我正在使用Node.js Express与socket.io。 //app.js var server = http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); var io = require('socket.io').listen(server,{'log level': 1}); 如果我想只为观看由index.js提供的索引页的人做“io.sockets.emit”,我怎样才能在index.js中调用“io.sockets.emit”而不是使用“require”作为应用。 js(主文件)? 尽pipe我找不到在多个文件中使用socket.io的示例源代码,但我已经使用了它。

CORS与socket.io

我在使用express.io的node.js应用程序的CORS上遇到了问题。 我是远程托pipe的socket.io客户端JS,因为这需要作为一个远程应用程序。 <script src="resources/js/socket.io.min.js"></script> 它在OpenShift上托pipe server.js: var ipaddr = process.env.OPENSHIFT_NODEJS_IP || "localhost"; var port = process.env.OPENSHIFT_NODEJS_PORT || 8080; var express = require('express.io'); // magical express.io var app = express(); // Enables CORS var enableCORS = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *'); // intercept OPTIONS method if ('OPTIONS' […]

socket.io在500个并发连接后停止工作

我有一个JavaScript浏览器的socket.io客户端模拟器创build并发连接( io.connect(host, {'force new connection': true}); )到我的socket.io node.js服务器,但是当websocket连接的数量在545左右,它突然停止工作,客户端尝试通过xhr-polling或任何其他后备协议(当然没有任何成功)连接。 我试图调整我的服务器,即使我现在还没遇到任何硬件问题。 我的ulimit -n设置为40960, ulimit -s是8192. sysctl -a | grep文件输出: fs.file-max = 800000 fs.file-nr = 7520 0 800000 我试图设置http.globalAgent.maxSockets为40000,但没有任何影响。 即使我试图从不同的机器(位于不同域之间,没有代理服务器)之间连接,只有100个并发连接,socket.io服务器将在达到545个客户端时停止服务。 我阅读了很多博客和类似的东西: Realtime Nodejs Stresstest Story Caustiks Blog with 250k + connections 有没有人有另一个想法,我可以错过看? 我正在使用我能得到的最新的socket.io和node.js。 我的服务器在Ubuntu上运行。

如何正确使用socket.io和oop

我喜欢node.js和socket.io,因为它们很强大,很漂亮,但是我的发展很less遇到问题。 这可能是因为我没有足够的练习node.js一个JavaScript的。 问题:有一个代码: var express = require('express'); var sio = require('socket.io'); var X = require('./js/x.js'); var Y = require('./js/Y.js'); var app = express.createServer(); var ws = sio.listen(app); var users = []; app.use(express.static(__dirname + '/public')); ws.sockets.on('connection', function(socket) { users.push(new X(socket)); if (users.length === 2) { var z = new Y(users.shift(), users.shift()); z.listen(); } }); app.listen(9000); 这里是X和Y: […]

Socket.io私人消息,同时有多个用户在线

因此,我正在构build一个聊天应用程序,并需要帮助了解如何发送私人消息。 这是我的代码,“发送消息”。 users = {} socket.on('send message', function(data, callback){ var msg = data.trim(); console.log(users); console.log('after trimming message is: ' + msg); var name = req.params.posteruname;//reciever var msg = msg; if(name in users){ var message = new Chat({ msg : msg, sender : req.user.username, reciever : name }).save(function(err, savedMessage){ if(err) { users[name].emit('whisper', {msg: "Error, some tried […]

客户端将所有图像永久存储在数据stream中

我正在实现一个节点服务器,它周期性地从networking摄像头抓取图像,并通过节点模块Delivery.js将它们发送到客户端。 但是,看看我的浏览器使用的资源(在Chrome开发工具中),似乎发送的每个映像都是由客户端(或可能由服务器?)无限期地存储的。 我使用的代码类似于Delivery.js自述文件中的“将文件推送到客户端”示例: 服务器代码 //set the camera to take a snapshot and send it for the required framerate setInterval(function(){ //take a snapshot of the current view cam.snapshot('./current_view.jpg' ,function( jpeg ) { //send this snapshot to client delivery.send({ name: 'current_view.jpg', path : './current_view.jpg' }); }) delivery.on('send.success',function(file){ //console.log('File successfully sent to client'); }); }, cameraUpdateDelay); 客户端代码 var […]

Socketio客户端识别消息来自哪个房间

如果一个客户join了多个房间并在这些房间里接收到消息,那么客户有没有办法确定他的消息来自哪个房间(没有在消息中包含房间)?

一个socket.io/node.js服务器是否可以被一个发送大于服务器内存大小的消息的客户端阻塞?

如果是这样,我该如何防止呢? 有没有最大的邮件大小设置? 如果不是,那么阻止它的机制是什么?

Express socket.io强大的意思。坚持如何在forms上进行整合

我正在做一个吝啬的 server.js 'use strict'; /** * Module dependencies. */ var express = require('express'), fs = require('fs'), passport = require('passport'), logger = require('mean-logger'); /** * Main application entry file. * Please note that the order of loading is important. */ //Load configurations //Set the node enviornment variable if not set before process.env.NODE_ENV = process.env.NODE_ENV || 'development'; […]

如何防止Twitterstream中的callback触发每个新的tweet?

我的应用程序通过Twitterstream筛选匹配的string。 当它find一个匹配时,它应该增加一个计数器并通过socket.io发送新的计数给客户端。 不幸的是,socket.io正在发送每一个tweet,而不是每一个匹配。 它比需要的时间更频繁地发射,导致浏览器问题。 我怎样才能防止Twitterstream中的每个新事件调用callback? 这是我的twitterstream的代码: // Compares watchList (NYT Keywords) to Twitter stream, counts every mention exports.keywordStream = function(callback) { exports.initializeFeed().then(function(watchList) { // enter the stream t.stream('statuses/filter', { track: watchKeywords }, function(stream) { // read twitter firehose ('data') for incoming tweets. stream.on('data', function(tweet) { var tweetText = tweet.text.toLowerCase(); // compare the text of each […]