【问题标题】:Laravel 5 - Homestead - Redis - NodeJs - Socket IO not playing nicelyLaravel 5 - Homestead - Redis - NodeJs - Socket IO 无法正常运行
【发布时间】:2015-05-05 11:43:39
【问题描述】:

我正在尝试在我的 Laravel 5 应用程序中获取一些实时通知。使用 Homestead 在 vagrant box 上本地构建。

我无法弄清楚以下设置的问题所在。

我的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-3net::ERR_CONNECTION_REFUSED

对 NodeJs 还很陌生,很困惑。现在花了整整 4 个小时来解决这个问题。

任何指针?

非常感谢,院长。

【问题讨论】:

  • 找到解决方案了吗?

标签: node.js redis socket.io laravel-5 homestead


【解决方案1】:

首先确保你已经安装了你的 server.js 文件的所有依赖项,如果你正在使用 Homestead,请在你的项目根目录中执行以下命令:

npm install express redis socket.io --save

等到安装完成并启动服务器:

节点服务器.js

【讨论】:

    【解决方案2】:

    使用您项目的虚拟主机名与套接字连接。 这个对我有用。 在您的客户端代码中编辑它。 var socket = io.connect('http://' + location.host + ':3000');

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 2022-09-27
      • 2020-05-26
      • 2021-08-15
      • 1970-01-01
      • 2015-02-27
      • 2017-05-05
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多