在我的生产服务器上迁移到Ubuntu20.04之后,我对让laravel工作有问题。它曾经在18.04上工作。两者都有相同的节点版本(我的开发工具是v14)。我想知道是否还有其他人有问题或可能的解决办法。顺便说一句,我试着换成了和Soketi,但那是一场噩梦,我花了3天的时间试图让他们连接起来(运气不好)。
在迁移到Ubuntu20.04时,我更新了package.json。我知道socket io和laravel-echo服务器有问题,所以这些都保持不变。
在浏览器中,没有网络错误。到达套接字io。同样,在控制台中也没有抛出错误。设置调试时,我在Redis监视器和laravel-echo服务器中看到导出事件.但是,javascript中的Echo从来没有捡到它。
如果有任何反馈的话。
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文件
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=beanstalkdlaravel-echo-server.json
{
    "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
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 (使用代理)
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
Echo.channel('export')
    .listen('PollExportEvent', (e) => {
        console.log('export called');
    });
PollExportEvent.php
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);
    }
}发布于 2022-02-03 21:01:32
为主机添加了端口,并删除了我的Nginx配置,现在它开始工作了。
import Echo from "laravel-echo"
window.io = require("socket.io-client");
window.Echo = new Echo({
    broadcaster: "socket.io",
    host: window.location.hostname + ':6001'
});
https://stackoverflow.com/questions/70974544
复制相似问题