首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用邮递员连接到在Docker中运行的laravel-websockets

如何使用邮递员连接到在Docker中运行的laravel-websockets
EN

Stack Overflow用户
提问于 2022-02-12 22:55:26
回答 1查看 1K关注 0票数 0

我想测试通过laravel从我的laravel应用程序广播的接收事件。该应用程序和websockets正在码头成功运行,我有主管保持一切正常运行。我的问题是,使用Postman的websocket特性,我无法连接到在docker中运行的websocket服务器(ws://127.0.0.1:6001)。我得到404。

docker-compose.yml

代码语言:javascript
复制
version: '2'

services:
  ace-contact-import:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    ports:
      - "8787:80"
      - "6001:6001"
    volumes:
      - ./:/var/www/
    tty: true
  composer:
    build:
      context: .
      dockerfile: ./docker/composer/Dockerfile
    depends_on:
      - ace-contact-import
    volumes_from:
      - ace-contact-import
    tty: true
  redis:
    image: redis:alpine
    container_name: ace-contact-import-redis
    command: redis-server --appendonly yes --requirepass "${REDIS_PASSWORD}"
    volumes:
      - ./data/redis:/data
    ports:
      - "8002:6379"
volumes:
  logvolume01: {}

websockets.php

代码语言:javascript
复制
'apps' => [
        [
            'id' => env('PUSHER_APP_ID'),
            'name' => env('APP_NAME'),
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'path' => env('PUSHER_APP_PATH'),
            'capacity' => null,
            'enable_client_messages' => false, // peer-to-peer client messages
            'enable_statistics' => false,
        ],
    ],

broadcasting.php

代码语言:javascript
复制
'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY', 'app-key'),
            'secret' => env('PUSHER_APP_SECRET', 'app-secret'),
            'app_id' => env('PUSHER_APP_ID', 'app-id'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'host' => env('LARAVEL_WEBSOCKETS_HOST', '127.0.0.1'),
                'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001),
                'scheme' => env('LARAVEL_WEBSOCKETS_SCHEME', 'http'),
                'encrypted' => false, // todo
                'useTLS' => env('PUSHER_SCHEME') === 'https', // todo
            ],
        ],

.env

代码语言:javascript
复制
PUSHER_APP_ID=12345
PUSHER_APP_KEY=ABCDEFG
PUSHER_APP_SECRET=HIJKLMNOP
PUSHER_APP_CLUSTER=mt1

LARAVEL_WEBSOCKETS_HOST=host.docker.internal # also tried 127.0.0.1
LARAVEL_WEBSOCKETS_PORT=6001
LARAVEL_WEBSOCKETS_SCHEME=http

# For Echo (Client side)
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-15 02:26:41

创建与websocket实例的原始ws连接:

代码语言:javascript
复制
ws://localhost:6001/app/abcdef

abcdef是PUSHER_APP_KEY,它应该与.env文件中的内容相匹配。如果您的端口不是6001,请在URL中更改它。

连接完毕后,您可以在邮递员内撰写邮件,订阅您的频道:

代码语言:javascript
复制
{
   "event":"pusher:subscribe",
   "data":{
      "auth":"",
      "channel":"your-channel-name-here"
   }
}

就这样!当消息从服务器广播时,它们将出现在屏幕底部的messages页面中。

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

https://stackoverflow.com/questions/71096534

复制
相关文章

相似问题

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