新規プロジェクトの作成
Project名: | CS_Socket |
開発言語: | C# |
使用ライブラリ: | SocketIoClientDotNet |
ライブラリ追加方法
メニューから ツール > NuGet パッケージマネージャー > ソリューションの NuGet パッケージの管理 > 参照 で SocketIoClientDotNet を検索してインストールします。
仕様
デバッグ機能:全チャットメッセージ削除機能。
デバッグ機能:全チャットメッセージ再読み込み機能。
チャット機能:1時間毎に気象庁ホームページ浜松気温データを読み出し、自動配信する。
チャット機能:テキストボックスに入力された文字列を配信する。
チャット機能:ホームページから入力された文字列を表示する。
チャット機能:定型文ボタンが押された時に、定型文を配信する。
画面仕様

管理者配信文字列とユーザー配信文字列を区別するために、色分け及び表示位置(左右)を行う。
プログラム説明
サーバーへの接続
this.socket = IO.Socket("https://########:$$$$/");
######## | サーバーアドレス |
$$$$ | ポート番号 |
サーバー接続確認
this.socket.On(Socket.EVENT_CONNECT, () =>
{
//ここに接続処理
}
サーバーへメッセージ(JSON)送信
var message = new NewMessage()
{
FromAddress = ID_ADMIN,
ToAddress = ID_SERVER,
TimeStamp = DateTime.Now.ToString(),
Event = "GET",
Message = "サーバーへの接続が出来ました。",
};
this.socket.On(Socket.EVENT_CONNECT, () =>
{
var src = new List<NewMessage> { message };
string jsonString = JsonConvert.SerializeObject(src);
this.socket.Emit("chat-message", jsonString);
this.Invoke((MethodInvoker)(() => {
labelConect.Text = "Conected";
}));
});
1行目 | 送信メッセージの定義。 |
11行目 | List要素の作成。 |
12行目 | JSONデータへ変換。 |
13行目 | メッセージの送信 |
14行目 | 画面に接続情報表示。 |
jsonStringの値
"[{\"fromAddress\":\"2\",\"toAddress\":\"1\",\"event\":\"GET\",\"message\":\"サーバーへの接続が出来ました。\",\"timeStamp\":\"2020/09/08 6:40:11\"}]"
メッセージの受信
this.socket.On("chat-message", (jo) =>
{
if (jo != null)
{
var list = JsonConvert.DeserializeObject<List<NewMessage>>(jo.ToString());
foreach (var booksByJson in list)
{
this.RecvNewMessage(booksByJson);
}
}
});
1行目 | サーバーからのメッセージ待ち。 |
5行目 | デシリアライズ - 型引数に復元するオブジェクトの型を指定し、JSON文字列を渡す。 |
6行目 | 受信データを取り出す。 |
7行目 | 受信データを表示する。 |
joの値
"[{\"fromAddress\":\"2\",\"toAddress\":\"1\",\"event\":\"POST\",\"message\":\"定型文:いつもご利用ありがとうございます。\",\"timeStamp\":\"2020/09/08 6:47:48\"}]"
コメント