本当は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ファイルだけを更新すればいいので、
開発環境と本番環境などの切り替えも便利にできますよ。
構築時に、古い書き方でエラー頻発して困ったので、自分の為の備忘録として、このブログを残しておきたいと思います。
ガンバレ、オレ!
0 件のコメント:
コメントを投稿