まとめをしてみます。
という感じにまとまりました。
結局java側だけしかかけなったけど、
javaでは排他制御をかける(synchronizedブロック)がほんとに重要。
nodeはシングルスレッドだから、
排他制御は基本的には不要。
その他、大事なトピックとしては、
- クライアントに送信しようとしても送信できないケースがある(たぶん避けらない)
- バックエンドでDBを使う場合は、基本的にはつなぎっぱなし(ただし、RDBとRedisではちょっと扱いが違うので注意)
などでしょうか。
最後にスケールアウトについて。
単純にスケールアウトする場合、pub/subを使うしか手がない。
pub/subができるのは、
- redis
- ActiveMQ
- Java Message Service
などがあるが、pub/subがあるとないとでは、
実装がかなり異なる。
重要なのは、
「sub」の接続を先に確立して、
処理を行い、
対象者に「pub」して、
「sub」でメッセージ送信を行う
という流れである。
pub/subを行うと、
データ自体もメモリに持てなくなるので、
十分注意しながらやっていただければと思います。
以上で、websocketの話はほんとにおしまい。
コメントがあればどうぞ