go modulesでSocket.ioからWebSocketに移行せずに済んだ件
こんにちは。次男も来年からは夏休みに宿題がありますが、奥さんが、前年の長男の自由研究を行えば、良いじゃね?って言ってます。そんな訳で、長男はあとは大きな課題は交通安全ポスターです。あおり運転ネタとか思いつきますが、学校に提出するので自粛かなw@kjunichiです。
背景
goのデスクトップマスコットgopheronでちょっと前からSocket.io互換のモジュールを最新版を利用すると ビルドエラーとなってしまう状態だった。
しかも、最新版のGo版のsocket.ioの互換ライブラリがブロードキャストに対応しなくなってしまったので、 この機会に勉強もかねて、素のWebSocketでの実装に移行しようかと考えていた。
goの新しいモジュール管理方式
npmやmrubyでは依存するライブラリのブランチ等を指定することができ、この問題は回避できていた。 が、goはバージョンを指定することができず、昔から、あれこれ回避する方法が考えられていたものの、 決定打はなかった模様。。。
gopheronでの対応
GO111MODULE=on go mod init
go.moduleというファイルを作成して、これに以下の内容を記述
module github.com/kjunichi/gopheron go 1.12 require github.com/googollee/go-socket.io v1.0.1
おわりに
go modulesを知って、当面は以前の版を指定することで、この問題を回避できた。