websocket 连接超时Laravel 10和soketi

h9a6wy2h  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(154)

我正在使用Docker for soketi,当事件被调度时,我可以在soketi docker日志中看到日志,但我在使用Laravel Echo的浏览器上遇到了连接超时问题。以下是我当前的设置:

# docker-compose.yml

  soketi:
    image: 'quay.io/soketi/soketi:latest-16-alpine'
    environment:
      SOKETI_DEBUG: "${SOKETI_DEBUG-1}"
      SOKETI_METRICS_SERVER_PORT: "9601"
      SOKETI_METRICS_ENABLED: "${SOKETI_METRICS_ENABLED-1}"
    ports:
      - "6001:6001"
      - "9601:9601"
# .env
BROADCAST_DRIVER=pusher
PUSHER_HOST=host.docker.internal
PUSHER_PORT=6001
PUSHER_APP_ID=app-id
PUSHER_APP_KEY=app-key
PUSHER_APP_SECRET=app-secret
PUSHER_SCHEME=http
SOKETI_DEBUG=1
#broadcasting.php
        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'host' => env('PUSHER_HOST', '127.0.0.1'),
                'port' => env('PUSHER_PORT', 6001),
                'scheme' => env('PUSHER_SCHEME', 'http'),
                'encrypted' => true,
                'useTLS' => env('PUSHER_SCHEME', 'http') === 'https',
            ],
        ],

我可以看到127.0.0.1:6001返回的ok

const echo = new Echo({
  broadcaster: 'pusher',
  key: 'app-key',
  wsHost: '127.0.0.1',
  wsPort: 6001,
  wssPort: 6001,
  forceTLS: false,
  encrypted: true,
  disableStats: true,
  enabledTransports: ['ws', 'wss'],
});

const channel = echo.channel('my-channel');

channel.listen('.user.login', (e: unknown) => {
  console.log('🚀 ~ file: index.vue:29 ~ channel.listen ~ e:', e);
});

和我得到
index.vue:26 WebSocket连接到“wss://127.0.0.1:6001/app/app-key?protocol=7&client=js&version=7.6.0&flash=false'失败:WebSocket在连接建立之前关闭`
我使用“Laravel-Echo”:“1.15.2”和“pusher-js”:“7.6.0”,.我不得不降级推最新到7.6作为8.0他们增加了集群作为一个强制性的选项.
知道吗?先谢谢你了
将laravel echo和pusher降级到不同的版本以及soketi,但没有运气

i5desfxk

i5desfxk1#

所以我解决了这个问题,这是因为我使用了反向代理(https),它强制连接是wss而不是ws。因此,我把soketi服务器放在反向代理后面,并将forceTLS设置为true,它可以按预期工作。

h7wcgrx3

h7wcgrx32#

我用另一种方式解决了这个问题。它也是在SOF的帮助下找到的,但我现在找不到链接。解决方案只是为了本地开发,将主机更改为本地IP之一。是

'host' => env('PUSHER_HOST', '127.0.0.1'),

现在

'host' => env('PUSHER_HOST', '192.168.0.7'),

在当地,它工作得很理想。

相关问题