[Nodejs] 今どきのSocket.IOの書き方

2022年9月22日

テクノロジー

eyecatch 本当はWebsocketモジュールの方が好きな、ユゲタです。 NodejsでのPolingするモジュールはいくつかありますが、やっぱり機能的にSocket.IOに軍配が上がってしまうようです。 無駄な機能が無い方が軽いと考えられるので、個人的にはwebsocketを使いたくて仕方がないんですが、 どうしてもRoomID機能が充実しているSocket,IOを使ってしまいます。 まあ、それは良いとして、このSocke.IOの書き方がバージョンアップをして、変更されていて、 色々なブログサイトで紹介されているどれも、陳腐化していたので、現時点での最新版の書き方を備忘録しておきたいと思います。 ちなみに、バージョンは、4.xですね。

Socket.IO情報

本家サイト https://socket.io/ サンプルコード https://socket.io/docs/v4/

備忘録コード

http設定 const port = 8000 const { Server } = require("socket.io"); const { createServer } = require("http") const httpServer = createServer() const io = new Server(httpServer , {}); io.on('connection' , connection) httpServer.listen(port) https設定 const setting = { port : 8000, domain : 'example.com', ssl : { cert : 'certファイルのパス', key : 'keyファイルのパス' } } const fs = require('fs') const { Server } = require("socket.io"); const { createServer } = require("https") const cert = setting.ssl.cert.replace('{{domain}}' , setting.domain) const key = setting.ssl.key.replace('{{domain}}' , setting.domain) console.log(cert,key) const httpsServer = createServer({ cert : fs.readFileSync(cert), key : fs.readFileSync(key), }) const io = new Server(httpsServer); io.on('connection' , connection) httpsServer.listen(setting.port)

ポイント解説

webrtcなどで使う場合は、httpsアクセスが必須なので、httpとhttpsの両方を書き込んでおきましたが、Let's Encryptと組み合わせてカンタンに設置できるので、 自分の場合は、このコードを1つの自分ライブラリにして使うようにしています。 httpsのsettingを別ファイルのjson形式にして、読み込みをする方式にしておけば、環境に応じてsetting.jsonファイルだけを更新すればいいので、 開発環境と本番環境などの切り替えも便利にできますよ。 構築時に、古い書き方でエラー頻発して困ったので、自分の為の備忘録として、このブログを残しておきたいと思います。 ガンバレ、オレ!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。