Laravel 5 - Homestead - Redis - NodeJs - Socket IO не работает хорошо

Я пытаюсь получить уведомления в реальном времени в своем приложении Laravel 5. Локальное строительство на бродячей коробке с Homestead.

Я не могу понять, в чем проблема со следующей настройкой.

Мой server.js выглядит следующим образом...

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(3000);

io.on('connection', function (socket) {

  var redisClient = redis.createClient();
  redisClient.subscribe('message');

  redisClient.on("message", function(channel, message) {
    socket.emit(channel, message);
  });

  socket.on('disconnect', function() {
    redisClient.quit();
  });

});

Тогда мой клиентский код должен подписаться:

<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>

<script>
var socket = io.connect('http://127.0.0.1:3000');
socket.on('message', function (data) {
   alert(data);
});
</script>

Firebug продолжает возвращаться:

ПОЛУЧИТЬ http://127.0.0.1/socket.io/?EIO=3&transport=polling&t=1430825965165-1 Прервано

Инструменты Chrome показывают мне следующее:

http://127.0.0.1:3000/socket.io/?EIO=3&transport=polling&t=1430826106108-3 net::ERR_CONNECTION_REFUSED

Довольно новичок в NodeJs и очень запутался. Потратил добрых 4 часа, пытаясь решить это.

Любые указатели?

Большое спасибо, Дин.


person Dean Collins    schedule 05.05.2015    source источник
comment
Вы нашли решение?   -  person M. Reza Nasirloo    schedule 09.10.2015


Ответы (2)


Сначала убедитесь, что вы установили все зависимости вашего файла server.js, если вы работаете с Homestead, выполните следующую команду в корневом каталоге проекта:

npm установить экспресс Redis socket.io --save

Дождитесь завершения установки и запустите сервер командой:

узел server.js

person Gonzalo Artur    schedule 27.05.2015

Используйте имя виртуального хоста вашего проекта для подключения к сокету. Меня устраивает. Отредактируйте это в своем клиентском коде. var socket = io.connect('http://' + location.host + ':3000');

person Jinal Patel    schedule 26.07.2016