websocket - 连接来自 Angular 项目的 Laravel 回声

标签 websocket redis socket.io laravel-echo angular-socket-io

我有一个在本地运行 Redis 的 Laravel-echo-server。
我创建了一个测试 API 端点,它发出可广播的事件。

http://localhost:8000/api/web-socket-test我在 echo server CLI 中看到了响应。 enter image description here

我设置了 laravel-echo 身份验证 key ,我可以从服务器 API 获取统计信息http://localhost:6001/apps/APP_ID/status?auth_key=b73a61d0 .

enter image description here

问题在于通过 ws: 协议(protocol)从 Angular 连接到 echo-server。
我的连接代码是

import {webSocket, WebSocketSubject} from 'rxjs/webSocket';
export class MyComponent implements OnInit, OnDestroy {

  myWebSocket: WebSocketSubject<any> = webSocket('ws://127.0.0.1:6001');

  ngOnInit() {
    this.myWebSocket.subscribe(
      msg => console.log('message received: ' + msg),
      err => console.log(err),
      () => console.log('complete')
    );
  }


最后我得到了一个错误:与“ws://127.0.0.1:6001/”的 WebSocket 连接失败:连接在收到握手响应之前关闭 .

enter image description here

如何建立ws连接?

最佳答案

我相信您想尝试使用 socket.io 客户端库而不是使用 rxjs 原始 websocket 进行连接。

尽管从 laravel echo server 文档中并没有立即明确,但项目标题声明它是“用于 Laravel Echo 的 Socket.io 服务器”。所以我假设您应该使用 socket.io 客户端库进行连接。

关于websocket - 连接来自 Angular 项目的 Laravel 回声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60189796/

相关文章:

php - Autobahn.js - 如何在订阅时传递数据

python - 如何跨多个服务器/ worker 管理 websockets

node.js - 如何使用redis发布/订阅

ios - 如果连接了 Socket.io,Alamofire 请求总是失败并返回 "The request timed out"

javascript - 销毁 Node 中的请求

android - UnitySocketIO向nodejs发送websocket消息

redis - StackExchange.Redis 客户端在订阅 channel 时是否受到限制?

用于 ppdb 资源表示的 redis

node.js - Socket.IO 确认交付

带有异步定时器的 Python 异步 websocket 客户端