質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Q&A

0回答

2003閲覧

Node.jsでSocket.IOを使って、C#のクライアントアプリと通信したい

TOMO6181

総合スコア40

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

0グッド

0クリップ

投稿2020/12/03 15:28

Node.jsでSocket.IOを使って、C#のクライアントアプリと通信しようとしていますが、接続のところでうまくいかず詰まっています。
環境は以下です。

●サーバー
VMWare Workstationで以下の設定をしています。
・OS:Ubuntu 64ビット
・バージョン:Workstation 15.x 仮想マシン
・IPアドレス:192.168.11.8(ブリッジ接続)
・ライブラリ:Socket.IO

●クライアント
・OS:Windows 10 Home
・実行環境;Visual Studio 2017
・ライブラリ:SocketIoClientDotNet

以下のコードを実行しています。

●クライアント

C#

1using Quobject.SocketIoClientDotNet.Client; 2using System; 3using System.Windows.Forms; 4 5namespace SocketIOTest 6{ 7 public partial class Form1 : Form 8 { 9 private const string SERVER_URL = "http://192.168.11.8:12345"; 10 11 public Form1() 12 { 13 InitializeComponent(); 14 } 15 16 private void btnConnect_Click(object sender, EventArgs e) 17 { 18 var socket = IO.Socket(SERVER_URL); 19 20 socket.On(Socket.EVENT_CONNECT, () => 21 { 22 //接続完了のイベントを受信 23 MessageBox.Show("接続完了"); 24 }); 25 } 26 } 27} 28

●サーバー(app.js)

JavaScript

1var express = require('express'); 2var app = express() 3var http = require('http').Server(app); 4const io = require('socket.io')(http); 5 6io.on('connection', function(socket){ 7 console.log('connected'); 8}); 9 10http.listen(12345, function(){ 11 console.log('server listening.'); 12});

●動作結果
サーバーのコードを「node app.js」コマンドで起動すると、「server listening.」が表示されます。
続いてクライアントでボタン押下イベント(btnConnect_Click)を呼んでも何も変化がありません。

本当は、サーバー側で「connected」、クライアント側で「接続完了」のダイアログが出てきて欲しいですが、
クライアント側からの接続要求がうまくいっていない、また、接続できたとしてもサーバーからクライアントに
接続完了を通知する処理が抜けているのか分からず詰まっています。
Socket.IOを使用してクライアントからの接続要求、サーバーから接続完了を通知する処理の記載方法が
分かる方がおられましたら、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TOMO6181

2020/12/05 11:14 編集

ありがとうございます。使用していたのは、以下のものですが、EngineIoClientDotNetと同様メンテナンスを止めたために使用は非推奨となっていました。 https://github.com/Quobject/SocketIoClientDotNet お教え頂きましたIBMのsocket-ioで試してみようと思います。 2020/12/05追記 IBMのsoekct-ioのサンプルを試していましたが、SampleHttpClientFactoryクラスがなくエラーが出てきました。以下のコードに同名のプロジェクトがありましたが、恐らく名前が同じだけで関係はなかったようです。 https://github.com/toanvo/SampleHttpClientFactory サンプルのプログラムがあるサイト等ありましたらお教えいただけますと助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問