我需要在浏览器端使用什么 URI 才能从 heroku 的 redis 插件连接到 Amazon Redis 服务器



我正在尝试使用 redis 和 socket.io 在 heroku 上设置一个聊天应用程序,但我无法弄清楚我应该在客户端放置什么 uri。

我尝试过的所有 uri,给我一个 404、name_not_resolved 或超时错误。


我有一个 heroku 应用程序,它正在运行一个节点.js构建包,它所做的只是运行套接字.js文件。

我还有另一个php heroku应用程序,它具有带有redis广播的laravel后端和一个vue前端。


广播的设置是,当有人发布帖子或发出 GET 请求"/"时,事件将分别在"新后频道"和"用户输入的聊天频道"上触发。


我可以进入套接字.js应用程序的 bash 并运行"节点套接字.js"。我可以看到它连接到heroku的redis addon Amazon服务器并接收广播。

我还可以进入第二个应用程序的heroku的redis-cli,进入监控模式,并看到广播正在按预期拾取。


这一切都在流浪家园虚拟服务器中工作,但在 heroku 上不起作用。


var socket = io('redis://h:oaisuhaosiufhasodiufh@ec2-99-81-167-43.eu-west-1.compute.amazonaws.com:6639');

(也许您还知道如何在我的第一个应用程序上自动运行"节点套接字.js"命令,这样我就不必进入 heroku 的 bash 并手动运行它?

alland all..我终于在 Vultr.com 上得到了一个VPS..并遇到了同样的问题..

所以答案是

  1. 如果你有HTTPS完成..那么你需要把你所在的域。
io('https://'+ window.location.hostname, {reconnect: true});
  1. 您需要导航到nginx配置文件并对其进行编辑。我已经在站点可用部分设置了我的。
/etc/nginx/sites-available/yourDomainOrIp.conf

3. 您将在配置文件中包含这些"位置"部分。制作一个新的。我把我的放在其他人之前。

location /socket.io/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass "http://localhost:3000/socket.io/";
}

本节意味着如果您访问某些内容/socket.io/,它将被重定向到 localhost 端口 3000。 在本地主机端口 3000 上,我有 nodejs 应用程序侦听

var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redisNewMessage = new Redis();
var redisUserEntered = new Redis();
server.listen(3000);

所以。。我仍然不知道如何完全回答这个问题..但基本上:

在该 io() 中,您需要传递一个地址,该地址最终将"/socket.io/polling%something&something"传递给本地主机和 NodeJS 应用程序所在的服务器的端口。

该亚马逊链接保留在nodejs新的Redis ()..Socket.io 必须连接到nodejs应用程序文件,然后一切都应该可以工作。

相关内容

  • 没有找到相关文章

最新更新