Node.js에서 Elixir/Phoenix의 채널에 연결
이와테 현립 대학 어드벤트 캘린더에 삽입했습니다.
화면 왼쪽이 Phoenix Channel에서 만드는 채팅, 오른쪽 터미널이 Node.js의 프로세스입니다.
Phoenix Channel의 Node.js Client
phoenix-channels 을 사용했습니다.
npm i --save phoenix-channels
app.js
'use strict';
const { Socket } = require('phoenix-channels')
const socket = new Socket("ws://localhost:4000/socket");
socket.connect();
const channel = socket.channel("chat:lobby", {});
channel.join()
.receive('ok', resp => console.log(`> joining channel ${channel.topic}`))
.receive("error", reason => console.log(`Error joining channel:`, reason));
channel.on("new_msg", msg => console.log(msg));
channel.onError(e => console.log("something went wrong", e))
이것만으로 연결할 수 있습니다.
간단.
빠진 곳
여기까지 가는 것에 비해 빠졌습니다.
const socket = new Socket("ws://localhost:4000/socket");
하는 곳
const socket = new Socket("ws://localhost:4000");
라고 지정한 것이 문제였습니다.
[debug] ** (Phoenix.Router.NoRouteError) no route found for GET /websocket (DemoWeb.Router)
등의 로그가 나왔지만 깔끔했습니다.
이 근처를 보면
endpoint.ex
socket "/socket", MyAppWeb.UserSocket
의 설명이 WebSocket의 경로를 지정하고 있는 개소라고 알 수 있습니다.
Reference
이 문제에 관하여(Node.js에서 Elixir/Phoenix의 채널에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/de740fc2e90f3242e01f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)