- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用部署在 Heroku 上的 Node & Express 4.0,并且我正在尝试使用 Redis 作为 session 存储来实现 Socket.io。所以我把它作为我当前的代码:
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var RedisStore = io.RedisStore;
if (process.env.REDISTOGO_URL) {
// inside if statement
var rtg = require("url").parse(process.env.REDISTOGO_URL);
var redis = require("redis").createClient(rtg.port, rtg.hostname);
redis.auth(rtg.auth.split(":")[1]);
} else {
var redis = require("redis").createClient();
}
/** Initialize RedisStore for socket.io **/
io.set('store', new RedisStore({
redis : redis
}));
但我收到以下错误:
14:25:03 web.1 | io.set('store', new RedisStore({
14:25:03 web.1 | ^
14:25:03 web.1 | TypeError: undefined is not a function
我也见过这种定义 RedisStore 的方式:
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
但是,我安装的 socket.io 版本是使用 npm install --save socket.io
安装的, 不包括 stores
在 lib
目录:
编辑
我在 socket.io 页面上看到了关于他们的 1.0 版本:
// 2. Implement the socket.io-redis adapter
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
但是我找不到关于这个新模块的其他文档,而且由于我是整个堆栈的新手,我想我自己无法弄清楚。
最佳答案
node.js 模块之间的趋势是删除不是模块真正核心的功能。
这就是为什么 socket.io 1.0 不再支持开箱即用的 redis。
所以第一步是追踪你需要的功能。
然后需要安装其他模块npm install socket.io-redis --save
最后配置您的应用程序。
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var redis = require('socket.io-redis');
io.adapter(redis(process.env.REDISTOGO_URL));
不错的部分是 socket.io-redis 适配器接受 redis url 并默认为 localhost:6379,因此您(应该)能够简单地传入 REDISTOGO_URL
关于node.js - 如何设置 RedisStore -- Node、Express、Socket.io、Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499306/
我使用 express 和 connect-redis 让服务器使用 Redis 进行 session 。 import Session from 'express-session'; const s
我正在使用 connect-redis - https://github.com/visionmedia/connect-redis在我的项目中。 有没有on error事件?有些东西,我可以把回调告
我正在从事一个涉及在客户端之间发送数据的大型项目。所以,我只是在研究一些新技术。不管怎样,我想试试 Nodejs。我只是有一个关于 socketio 和 redis 的问题。 当我们在 socketi
我正在使用 Redis(使用 redis-store)作为我的 Rails 4 应用程序的缓存存储。但是,如果我终止我的 redis-server,应用程序会出错(Redis not found 错误
我似乎无法让 socket.io RedisStore 在 heroku 上工作。我能够连接到 RedisToGo,但是当我调用 new RedisStore() 时如果我没有向 RedisToGo
我正在使用 Redis 在我的 node.js 应用程序中存储 session ,该应用程序托管在 heroku 上,但 Redis 正在保存 session ,我如何让它们自动过期? 我的 expr
我没有使用 NodJ 的经验。我正在尝试使用 node 命令从命令提示符运行 app.js 文件,但收到此错误 D:\Imports\sparkleshare-dashboard\node_modu
以这个示例代码为例: //Redis Variables var redis = require('socket.io/node_modules/redis'); var RedisStore = r
我已经针对同一问题解决了很多问题,但各种解决方案都没有帮助。我正在使用 Redis 在集群 NodeJS+ExpressJS 应用程序中存储 session ,但 session 始终未定义。这是我的
我正在尝试访问 express 中的 session 数据,所以我想在配置 express 时尝试声明一个 connect-redis session 存储。但是,我不明白为什么这不起作用: var
我正在使用 Node.js 和 Socket.io 开发一款多人在线游戏。我希望有很多玩家加入游戏,所以我将其托管在 Amazon Opworks 上。 问题是服务器无法将套接字事件发送到连接到不同服
我是否实现了序列化和反序列化? RedisStore 设置为我与 Express 的 session 存储。这是否意味着我没有实现序列化和反序列化?它会自动发生吗? 当我不实现这些方法时,我会收到以下
我确实看到了一些类似的问题,但是九个可以解决我的问题! req.session 在 nodeJS Express 应用中总是未定义的。在 express/connect-redis/和 express
当我尝试运行我的 Node.js 应用程序时遇到以下错误: Starting child process with 'node ./app.js' C:\Users\Julian\OneDrive\D
我知道你可以使用 Redis for the communication between socket.io sockets from different cluster workers在 node.
我以前这样做过...这次我没有意识到我做错了什么,但我已经苦苦挣扎了几个小时,现在认为自己精神上受阻了。对应代码: app.use(express.bodyParser()); app.use(i18
我在 heroku 上扩展我的 Node.js 应用程序时遇到问题。我正在使用 RedisStore 来保持 Node 进程之间的套接字连接持久。我正在扩展到 2、3 个进程。我在这里遵循了这段代码
当我运行应用程序时,我会收到该消息。我正在尝试按照 here 中描述的说明进行操作 这是我的 app.js 文件的一部分 var express = require('express'); var R
我正在尝试跨多个进程和/或服务器扩展一个简单的 socket.io 应用程序。 Socket.io 支持 RedisStore,但我不知道如何使用它。 我在看这个例子, http://www.ranu
关注rediststor docs , 我想修改 this使用redis存储 session 的代码。这是我想出的: package session import ( "net/http"
我是一名优秀的程序员,十分优秀!