ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

バッチでエラー発生時、クライアントに通知する仕組みをWebSocketで実現

■概要図

f:id:taka_2:20160903192047p:plain

 

メール通知でよくないか?

というツッコミはさておき、考えてしまったものは仕方ない。といったところでしょうか。

 

■疑問点

・RestControllerとWebSocketHandlerをどうつなぐのか?

・.NETのWebSocketクライアントと、Java(spring boot)のWebSocketサーバはつながるのか?

 といった疑問を解消すべく、動作検証してみました。

 

■参考URL

サーバサイド:

pgcolony.com

クライアントサイド:

 [C#]System.Net.WebSocketsを試す。その1。ClientWebSocket編。 | Kimux.Net

 

 この二つのサンプルを組み合わせれば完了です。

一応自分のgithubリポジトリにも作ってみました。

https://github.com/taka2/spring-boot-websocket-sample

https://github.com/taka2/web-socket-client-sample-dotnet

 

 ■疑問点の解消

・RestControllerとWebSocketHandlerをどうつなぐのか?

→RestController側に、WebSocketHandlerを@Autowiredすれば普通に呼べる

 

・.NETのWebSocketクライアントと、Java(spring boot)のWebSocketサーバはつながるのか?

→.NETで使えるWebSocketクライアントはいくつかあるようです。

・WebSocket4Net

websocket4net.codeplex.com

・websocket-sharp

github.com

・標準のSystem.Net.WebSockets

 

・WebSocket4Net

よさげだったのですが、うまくつながらず(Javaとの相性?)

websocket-sharp

自分でビルドするか、買わないといけないらしく、あきらめた。

・標準のSystem.Net.WebSockets

うまく動作しました。ただし、Windows8以降しか対応していないようなので、実務では使えません。どうするか要検討です。

 

というわけで、課題はあるものの、仕組みとしては実現可能ということが分かりました。しかし、もっとシンプルな仕組みにできないものですかね。