Я пытаюсь подключить Angular 9
в качестве клиента с phoenix. js для подключения к существующему каналу Phoenix.
Сначала я создал приложение angular через команду cli, и я скачал Phoenix через npm install phoenix
. Затем я добавил путь к Phoenix в angular.json
"scripts": [
"./node_modules/phoenix/priv/static/phoenix.js"
]
Затем я создал службу
import { Injectable } from '@angular/core';
import { Phoenix } from 'phoenix';
declare var Socket: any; // there is no typescript version of the package available so we cannot use a compile time import
declare var Phoenix: any;
@Injectable({
providedIn: 'root'
})
export class PhoenixService {
socket: any;
constructor() {
let socket = new Phoenix.Socket("wss://api.catalx.io/markets", {params: {}})
socket.connect()
let channel = socket.channel("updates:CAD-BTC", {})
channel.on("new_msg", msg => console.log("Got message", msg) )
channel.join()
.receive("ok", ({messages}) => console.log("catching up", messages) )
.receive("error", ({reason}) => console.log("failed join", reason) )
.receive("timeout", () => console.log("Networking issue. Still waiting..."))
channel.push("fetch", "market_state")
}
}
Наконец, вызвал эту службу в AppComponent
export class AppComponent {
constructor(private phoenixService: PhoenixService) {
phoenixService.socket.connect();
}
}
В результате я получаю
core. js: 6237 ОШИБКА TypeError: Невозможно прочитать свойство 'connect' undefined в новом AppComponent (app.component.ts: 14)
phoenix. js: 1 Сбой подключения WebSocket к 'wss: //api.catalx.io/markets/websocket? Vsn = 2.0.0': ошибка при рукопожатии WebSocket: непредвиденный код ответа: 403
Наверное, я сталкиваюсь с этими ошибками, потому что PhoenixService
не может захватить phoenix.js
? Маленькая помощь приветствуется!