Tag: socket.io

实时:Node.js,MongoDB和Redis?

好的,首先我要告诉你,我对标题中提到的所有技术都是新手。 我想制作一个新的应用程序。 把它看作是一个实时交易引擎(例如股票)。 所以,有两件事真的很重要: 速度/performance:每个人都必须实时看到交易 安全性:同样的交易可以同时进行,但只有一个可以成功 我想到了这样一个方法: 如果用户想要以每股100美元的价格购买10股X股票,他就会下订​​单,我用Redis存储(速度),并用socket.io把它推送给所有的客户。 那么,一旦另一个用户想要以100美元出售15个peaces,那么脚本应该检查是否有一个开放的买单。 如果是这样,它将其保存为MongoDB中的成功事务(persistance),并closures10个peaces的购买订单。 在这个例子中,剩下5个peaces。 脚本会显示这样的计算:15(卖100美元)减10(买100美元)等于5左。 每次有人想要交易的东西,这个计算将被作出,因为我不知道有多less股票剩下的交易。 编辑:或者我可以在Redis中减去15个peaces中的10个peaces,这样我就不需要每次计算了。 但如果出现什么问题,我不知道原始数据是什么。 这是一个问题。 现在的问题是: 你会这样做吗? 更好的想法也许? 如果两个用户在同一时间完成相同的订单,会发生什么情况? 这是否会发生,它被存储在MongoDB两次作为不同的成功交易? 当然,你可以通过Redis和MongoDB进行审计并进行比较。 但那将是一个可怕的解决scheme。 希望你明白我想问什么。 提前致谢!

Express 4 – 如何parsing签名的cookie?

我正在使用Socket.IO和Express 4进行授权。由于Express.JS不再依赖连接中间件,所以在使用新的cookieparsing器模块parsing带符号的cookiestring时遇到了问题。 假设我需要在Cookie中检查RedisStore中的会话。 这是我从Socket.IO handshakeData得到的: { host: 'localhost:8081', accept: '*/*', connection: 'keep-alive', cookie: 'io=CyMFrlbrFD23UeVbAAAA; connect.sid=s%3ADHWS7fJ8e5mQ35yvrKwUBQXH7oAIoEIz.R0TLqQ93IwotvIxNqdU17IgPDKOBMXnlM9eTZ8e4gFU', … } 如何使用sessionSecretparsingcookie参数我必须在Redis商店中search合适的会话? 以前我用过 sessionID = globals.connect.utils.parseSignedCookie(handshakeData.cookie["connect.sid"], SESSON_SECRET) 并在Redis中用键search client.get "sess:" + String(sessionID), (err, reply) -> … # we found session object with username, success! 现在我不能这样做。 有任何想法吗? 谢谢!

在heroku上的socket.io请求404

我的应用程序在本地工作,但是当我部署到heroku的请求myapp.herokuapp.com/socket.io得到一个404响应。 这是我的代码: var express = require('express'); var http = require('http'); var app = express(); var port = 8080; // Configuration of the server require('./ServerConfig').serverConfig(app, express); var server = http.createServer(app).listen(port) var io = require('socket.io').listen(server); io.on('connection', function(socket){ console.log('a user connected'); socket.on('message', function(msg){ console.log(msg); io.emit('message', msg); }); }); 我刚开始使用nodejs,我不明白为什么它崩溃。 有人可以解释这个错误的原因或如何debugging? 谢谢 !

err_connection_refused使用socket.IO

我正在用socket.io使用nodejs进行多人游戏。 当我正在运行nodejs的笔记本电脑上工作时,一切正常。 我可以打开多个窗口选项卡,我有多个用户。 但是当我试图连接到我的本地ip(从节点服务器)从另一台笔记本电脑旁边,我得到一个错误与socket.io "GET http://localhost:8000/socket.io/socket.io.js net::ERR_CONNECTION_REFUSED" 码 /************************************************** ** GAME INITIALISATION **************************************************/ function init() { // Declare the canvas and rendering context canvas = document.getElementById("gameCanvas"); ctx = canvas.getContext("2d"); // Maximise the canvas canvas.width = window.innerWidth; canvas.height = window.innerHeight; // Initialise keyboard controls keys = new Keys(); // Calculate a random start position for the […]

保存数据到socketio

我试图保存数据(简单的types,如string和整数)到我的Socket.IO应用程序中的套接字。 在1.0版本之前,我使用了io.get()和io.set()但现在它们已经被折旧了。 这事有进一步更新吗 ?

Express-Generator – 包含socket.io(bin / www)

我一直是一个Perl / PHP sorta人,但我喜欢改变和节点JS似乎是我下一个去的正确的地方。 我已经在YouTube上观看了好几个小时的教程,并在这里阅读了一些post – 但是我已经有点卡住了。 我想在我的express生成的应用程序(v4.10.6)中包含socket.io。 同时,虽然我并不想在一个文件中包含socket.on(…)语句,但是我更愿意将它们像路由一样分开。 鉴于快速生成的应用程序在bin / www中启动,我很困惑,我需要('socket.io'),并指出所有'开'的事件。 这个post在stackoverflow ,我想可能回答我的问题 – 但它build议所有的套接字处理程序在./sockets/base.js文件 – 我对Gofilord对答案的答复感到困惑。 请原谅我的无知 – 这一切对我来说都是陌生的,并感谢你一如既往地花时间阅读本文和你的帮助。 /斌/ WWW #!/usr/bin/env node var debug = require('debug')('rhubarb'); var app = require('../app'); app.set('port', process.env.PORT || 1127); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); });

如果服务器崩溃,如何跟踪用户的“在线”状态?

我有多个heroku dynos和一个聊天应用程序。 当用户login时,他们的状态在MongoDB中设置为“联机”。 但是,如果服务器崩溃,他们的状态将仍然设置为在线。 如何在服务器崩溃时将用户状态更新为“脱机”? 如果我只有一个测功机,这将是容易的。 我只是更新每个用户在服务器启动时“离线”。 不幸的是,这对多个服务器来说是不可能的。

将socket.io连接到不同的地址

我正在开发一个Django系统,它有一个使用socket.io构build的聊天工具。 今天,我试图让webfaction的一切,所以我注册到http://example.com的django部分和http://example.com/chat的节点/套接字部分。 我已经设法为浏览器提供socket.io.js ,但连接不起作用。 客户端正试图连接到http://example.com而不是http://example.com/chat,所以我得到这个错误: Failed to load resource: the server responded with a status of 404 (Not Found) http://example.com/socket.io/?EIO=3&transport=polling&t=1421523295233-0 在客户端,我写了这个var socket = io.connect('http://example.com/chat/')来build立连接 在服务器上我写了这个: var express = require('express'); var app = express() var http = require('http'); var server = http.createServer(app).listen(20964, "127.0.0.1"); var io = require('socket.io')(server); 使用服务器IP地址是不可能的,因为它将来可能会改变。 我在这里做错了什么? 谢谢

如何混合使用Socket.io和AJAX

我开发了一个Web应用程序,需要Socket.io将通知推送给用户。 鉴于此,最好是使用Socket.io进行客户端和服务器之间的所有通信,或者对所有不需要Socket的通信使用普通的AJAX调用? 谢谢!

Node.js – 处理数百个用户首选项

我正在学习node.js(我的网站背景主要是PHP),我很喜欢它,但我有以下问题。 在PHP和其他类似的语言中,每个请求都是脚本的一次性执行。 所有的用户首选项可以加载,等可以加载,没有问题,因为一旦脚本执行完成,所有的资源将被释放。 在node.js中,特别是在像chatroom这样的长时间运行的进程中(我使用的是socket.io),你将有成千上万的用户被一个进程处理。 假设我有一个200人的聊天室,并且如果消息来自用户认为是“朋友”的参与者,我想让消息突出显示,那么我将不得不循环200个用户以查看用户是否是朋友或不(特别是如果聊天只能发送给朋友,而不是公开)。 这不是真的很慢,特别是随着时间的推移? 有什么我错过了吗? 在我的小testing中,随着用户数量和消息数量的增加,服务器的响应能力明显下降。