私の調べた限りでは、日本語、英語に関わらず、VB.NETでSocket.IOを使用した通信を行う方法の解説が見当たらなかったため、ここに記事として残します。
スポンサーリンクSocket.IOとは
Socket.IOとは、Node.js用に作られた、WebSocketによるリアルタイム通信を行うためのライブラリです。これを使うことで、簡単にWEBチャットアプリなどを作成することができます。
WebSocketをVB.NETで使用する方法は他にもありますが、私のように、サーバー上で動いているNode.jsアプリとクライアントPC上で動いているVB.NETアプリの間でWebSocket通信を行う場合は、Socket.IOで統一すると扱いやすいのではないかと思います。
環境の準備
今回は
- Microsoft Visual Studio Community 2015(以下VSと略します)
- .NET Framework 4.5.2
を使用します。
- 初めに、VSで「Visual Basic Windows フォーム アプリケーション」のプロジェクトを作成します。
- プロジェクトを「すべて保存」します。これでプロジェクトがProjectフォルダに存在するようになります。
- ツール→NuGet パッケージ マネージャー→ソリューションの NuGet パッケージの管理
を開きます。 - 「参照」を押し、検索窓に「socketio」と入力します。
- 「SocketIoClientDotNet」を押し、プロジェクトにチェックを入れて最新版をインストールします。
- ライセンスに同意するなどの操作を行うと、Socket.IOクライアントのインストール完了です。
プログラムの作成
フォームの作成はお好みですが、私の場合はButton1としてConnectボタンのみ設置しました。
以下のようなコードを書きます。
Imports Quobject.SocketIoClientDotNet.Client
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim socket = IO.Socket("https://WebSocket接続のためのURL")
socket.On(Socket.EVENT_CONNECT, AddressOf Connect)
socket.On("chat1", AddressOf Receive)
End Sub
Sub Connect()
Console.WriteLine("Connected.")
End Sub
Sub Receive(text As String)
Console.WriteLine(text)
End Sub
End Class
ソケットを作成し、Connectされた時の処理、イベント"chat1"を受信したときの処理を設定する流れです。
ミソは、AddressOf によってメソッドを指定するという点です。(ちなみに、C#のサンプルコードは見たことがありますが、そこではラムダ式を使って処理していました。C#についてはこちらのサイトを参考にするといいかもしれません。)
実行
実行すると、
このように出力ウィンドウに出力されます。
スポンサーリンクおまけ
テキストボックスなどに出力することも頑張れば可能です。
別スレッドからの操作になるため、Delegateを使用してTextBoxのTextを変更する必要があります。
Imports Quobject.SocketIoClientDotNet.Client
Public Class Form1
Delegate Sub textd(text As String)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim socket = IO.Socket("https://WebSocket接続のためのURL")
socket.On(Socket.EVENT_CONNECT, AddressOf Connect)
socket.On("chat1", AddressOf Receive)
End Sub
Sub Connect()
Console.WriteLine("Connected.")
End Sub
Sub Receive(text As String)
'Console.WriteLine(text)
Invoke(New textd(AddressOf change), text)
End Sub
Sub change(text As String)
TextBox1.Text = text
End Sub
End Class
このようなコードになります。
ご覧いただきありがとうございました。
コメント
first of all, thank you very much for your contribution, excuse me, I am using a language translation (Spanish to English), for many months I searched for the
correct syntax to use node.js in a vb.net client, because as you mention in your article , all the examples are in C#, thank you very much once again,
a friend says goodbye. “Kory Alva” from Mexico