Express-generatorとEJSとSocket.io でチャット作成
node.js初心者です。
expressとsocet.ioでチャットを作る方法はたくさん見つかりますが、express-generatorでチャットを作る記事はなかなか見つかりません。
そんな中、こちらの記事を参考にさせていただきました。
こちらの記事ではsocket.ioのバージョンが2.3.0ですが
自分はsocket.io 4.2.0でインストールしていて、コピペしたままだとエラーでうまく動きませんでした。
その他のバージョンですが
- node v12.18.0
- express@4.16.4
- socket.io@4.2.0
- ejs@2.6.2
動くように修正したポイントは2カ所です。
/models/chat.js
/models/chat.jsの4行目あたり
const sio = socketio.listen(server);
この行でエラーが発生していました。
調べたところ、新しいsocket.ioはlisten()メソッドが使えなくなったようです。
新しいバージョンでは
const sio = socketio(server);
が正しい記述法となるようです。
▼参考
Node.js - node.js の socket.io listen でエラーが発生します。|teratail
/views/index.js
次に、/views/index.js で読み込んでいるCDNのsocket.ioのバージョンを4.2.0に書き換えます。
16行目あたり
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
▼修正
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"></script>
自分の場合は上記2カ所の修正で動くようになりました。
チャットにいろんな機能を追加していきたいのですが道のりは長そうです。
ユーザー登録・認証機能
チャットルーム分け
チャット内容保存
チャット内容編集・削除
データベース使ったりセキュリティとか考えないとダメなんだろうけど、全然その域にまで達してないので一つ一つ作れるように頑張ってまいります。
おわり