【问题标题】:Laravel echo, socket.io, and laravel-echo-server won't workLaravel echo、socket.io 和 laravel-echo-server 不起作用
【发布时间】:2017-01-10 01:30:29
【问题描述】:

这可能是我遇到过的最令人沮丧的事情,可悲的是,这可能是我所做的一些愚蠢的事情。

这里是我正在使用的三个东西的链接:

这是我的问题:我的网站不断地走这条路线:http://192.168.10.10:6001/socket.io。我不知道它为什么会走这条路线,因为我没有在我的代码中的任何地方定义socket.io 部分。这是我在 bootstrap.js 中用于实例化 Laravel Echo 的代码。

import Echo from "laravel-echo"

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: 'http://192.168.10.10:6001'
});

这是我的 socket.js 文件 (node.js) 中的代码:

var echo = require('laravel-echo-server');

var options = {
  authHost: 'http://192.168.10.10',
  authPath: '/broadcasting/auth',
  host: 'http://192.168.10.10',
  port: 6001
};

echo.run(options);

到目前为止,这里没有任何可能出错的地方。这是链接回cdn的错误消息。奇怪的是更改window.Echo主机会更改域,但我不知道如何更改socket.io部分。

这让你想知道,它是否在 Socket.io 文件的某个地方进行了硬编码?这是我第一次使用 Socket.io,所以我无从得知。也许在我放入 CDN 之后,我需要做一些额外的设置? Laravel 文档说要做的就是添加脚本标签,而 Laravel 以拥有出色的文档而闻名。

任何专业知识将不胜感激,请赐教!

更新

MMMTroy 建议我在 vm 中启动我的 socket.io 服务器,而不是我的普通计算机。这很有意义,并且可能是问题所在。但现在我遇到了另一个问题。之前,我只是启动服务器(在我的普通计算机上),它会说:EchoServer: "Server running at http://192.168.10.10:6001"。现在,当我尝试在我的 vm 上启动服务器时,它返回此错误:

/home/vagrant/Projects/Blog/node_modules/laravel-echo-server/dist/echo-server.js:159
    emitPresenceEvents(socket, channel, members, member, action = null) {
                                                                ^

SyntaxError: Unexpected token =
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/vagrant/Projects/Blog/node_modules/laravel-echo-server/dist/index.js:2:23)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

我应该怎么处理这个错误?我查看了 laravel-echo-server emitPresenceEvents 函数,但我不知道发生了什么。

谢谢。

已修复!

我终于修好了,和node版本有关。我将 homesteads 节点更新到最新版本并修复了它。

【问题讨论】:

  • 你在导入
  • 对不起,根据您最后添加的错误,您的站点必须尝试根据我上面提到的文件连接到您的套接字。我想你一定是在你的一个刀片中添加了这个。该错误只是说它无法连接到您的套接字。您是否启动了节点服务器?
  • 是的,套接字服务器已启动。
  • 好的。我昨天自己才得到这个设置。您是在本地机器上还是在虚拟机上启动节点服务器?我从我的虚拟机(vagrant/homestead)中项目的根文件夹启动了我的节点服务器。你真的很亲密。
  • 另外,我不需要“authHost”或“authPath”。尝试抛弃它们。

标签: node.js laravel socket.io laravel-5.3 socket.io-redis


【解决方案1】:

对我来说,我必须从我的虚拟机启动我的套接字,而不是我的本地设置。尝试通过虚拟机(homestead/vagrant)从项目的根目录启动服务器,而不是计算机的正常文件夹结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多