Open3

webSocketを触ってみる

harutiroharutiro

参考記事

socket通信でないと行けない理由・postで送信だけでもやればよかった話
https://zenn.dev/dove/articles/9c869cd46e1a5a

通信の図
https://atmarkit.itmedia.co.jp/ait/articles/1603/14/news015.htm

l

socket通信の全般を知る
https://koro-koro.com/socketio-react/

honoでの実装方法
https://github.com/orgs/honojs/discussions/1781

reactでの実装方法
https://tomiko0404.hatenablog.com/entry/2021/11/01/socket-io-react-nodejs

harutiroharutiro

viteでの実装方法

クライアントの受信コード

export function sendMessage(message: string) {
  const socket = io('ws://127.0.0.1:8000', { path: '/ws' })
  socket.on("connect", () => {
    console.log(`socket.connectを出力`);
    console.log(socket.connect()); // サーバに接続できたかどうかを表示
  });
  socket.emit("chat message", message);

  socket.on("chat message", (msg: string) => {
    console.log(`chat messageを出力`);
    console.log(msg);
  });
}

harutiroharutiro

honoでの実装方法

サーバー側

const server = serve({
  fetch: app.fetch,
  port: 8000,
})

const ioServer = new Server(server as HttpServer, {
  path: '/ws',
  serveClient: false,
  cors: {
    origin: '*',
  },
})

ioServer.on('error', (err) => {
  console.log(err)
})

ioServer.on('connection', (socket) => {
  console.log('client connected')

  socket.on('chat message', (msg) => {
    ioServer.emit('chat message', msg)
  })
})