首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel Echo、Redis、Socket IO和Laravel-echo服务器停止工作,需要一些想法。

Laravel Echo、Redis、Socket IO和Laravel-echo服务器停止工作,需要一些想法。
EN

Stack Overflow用户
提问于 2022-02-03 16:04:56
回答 1查看 745关注 0票数 0

在我的生产服务器上迁移到Ubuntu20.04之后,我对让laravel工作有问题。它曾经在18.04上工作。两者都有相同的节点版本(我的开发工具是v14)。我想知道是否还有其他人有问题或可能的解决办法。顺便说一句,我试着换成了和Soketi,但那是一场噩梦,我花了3天的时间试图让他们连接起来(运气不好)。

在迁移到Ubuntu20.04时,我更新了package.json。我知道socket io和laravel-echo服务器有问题,所以这些都保持不变。

在浏览器中,没有网络错误。到达套接字io。同样,在控制台中也没有抛出错误。设置调试时,我在Redis监视器和laravel-echo服务器中看到导出事件.但是,javascript中的Echo从来没有捡到它。

如果有任何反馈的话。

代码语言:javascript
运行
复制
Ubuntu 20.04
NodeJs 14.19.0
Laravel-echo-server: 1.6.3
Laravel Echo: 1.11.3
Socket IO: 2.3.0
Broadcast driver: Redis
Queue: Beanstalk

(域和应用程序信息隐藏)

.env文件

代码语言:javascript
运行
复制
ECHO_ID=APP_ID
ECHO_KEY=APP_KEY
ECHO_PORT=6001
ECHO_SSL_CRT=/etc/ssl/certs/DOMAIN.crt
ECHO_SSL_KEY=/etc/ssl/certs/DOMAIN.key

BROADCAST_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

QUEUE_DRIVER=beanstalkd

laravel-echo-server.json

代码语言:javascript
运行
复制
{
    "authHost": "https://DOMAIN",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
        {
            "appId": "APP_ID",
            "key": "APP_KEY"
        }
    ],
    "database": "redis",
    "databaseConfig": {
        "redis": {
            "port": "6379",
            "host": "127.0.0.1"
        },
        "sqlite": {}
    },
    "devMode": false,
    "host": null,
    "port": "6001",
    "protocol": "https",
    "socketio": {
        "cors": {
            "origin": "https://DOMAIN",
            "credentials": true
        }
    },
    "sslCertPath": "/etc/ssl/certs/DOMAIN.crt",
    "sslKeyPath": "/etc/ssl/certs/DOMAIN.key",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
    }
}

app.js

代码语言:javascript
运行
复制
import Echo from "laravel-echo"
window.io = require("socket.io-client");
window.Echo = new Echo({
    broadcaster: "socket.io",
    host: window.location.hostname
});

nginx site.conf (使用代理)

代码语言:javascript
运行
复制
location /socket.io/ {
    proxy_pass https://127.0.0.1:6001/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $remote_addr;
}

admin.js

代码语言:javascript
运行
复制
Echo.channel('export')
    .listen('PollExportEvent', (e) => {
        console.log('export called');
    });

PollExportEvent.php

代码语言:javascript
运行
复制
class PollExportEvent extends Event implements ShouldBroadcast
{

    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * @var array
     */
    public $data = [];

    /**
     * The name of the queue on which to place the event.
     *
     * @var string
     */
    public $broadcastQueue;

    /**
     * PollExportEvent constructor.
     * @param $data
     */
    public function __construct($data)
    {
        $this->data = $data;
        $this->broadcastQueue = 'event_tube';
    }

    /**
     * Get the channels the event should be broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel
     */
    public function broadcastOn(): Channel
    {
        return new Channel('export);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-02-03 21:01:32

为主机添加了端口,并删除了我的Nginx配置,现在它开始工作了。

代码语言:javascript
运行
复制
import Echo from "laravel-echo"
window.io = require("socket.io-client");
window.Echo = new Echo({
    broadcaster: "socket.io",
    host: window.location.hostname + ':6001'
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70974544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档