Какой URI мне нужен на стороне браузера для подключения к серверу Amazon Redis из аддона Redis Heroku - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь настроить приложение чата на heroku с помощью redis и socket.io, но я не могу понять, какой URI я должен поставить на стороне клиента.

Все uri, которые я пробовал, дают мне 404, name_not_resolved или timeout erorrs.


У меня есть одно приложение heroku, которое запускает buildpack-пакет node.js, и все, что он делает - запускает файл socket.js.

И у меня есть еще одно приложение php heroku, у которого есть задний конец laravel с трансляцией redis и передний конец vue.


Вещание настроено так, что когда кто-то публикует сообщение или делает GET-запрос «/», событие запускается на «new-post-channell» и «user-input-chat-channel» соответственно.


Я могу зайти в bash приложения socket.js и запустить 'node socket.js'. Я вижу, что он подключается к серверу Amazon на Redis-аддоне Herois и подключается к трансляции.

Я также могу зайти в redis-cli heroku второго приложения, в режим монитора, и увидеть, что трансляции принимаются по назначению.


Все это работало на виртуальном сервере бродячей усадьбы, но не на герою.


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

(а может быть, вы также знаете, как я могу автоматически запустить команду 'node socket.js' в моем первом приложении, чтобы мне не пришлось заходить в bash heroku и запускать ее вручную?)

1 Ответ

0 голосов
/ 12 мая 2019

Все и все .. Я наконец-то получил VPS на Vultr.com .. И столкнулся с той же проблемой ..

Так что ответ

  1. , если у вас есть httpsготово .. тогда вам нужно поставить домен на котором вы находитесь.
io('https://'+ window.location.hostname, {reconnect: true});
Вам нужно перейти к своим файлам конфигурации 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/, он будет перенаправлен на локальный порт 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.

Эта ссылка amazon остается в новой Redis () узлаjj. Socket.io имеетподключиться к файлу приложения nodejs и тогда все должно работать.

...