Websockets-server-working
WebSockets-サーバー作業
Web Socketサーバーは単純なプログラムで、Web Socketイベントとアクションを処理する機能があります。 通常、Web SocketクライアントAPIに同様のメソッドを公開し、ほとんどのプログラミング言語は実装を提供します。 次の図は、Web SocketサーバーとWeb Socketクライアント間の通信プロセスを示しており、トリガーされたイベントとアクションを強調しています。
次の図は、Web Socketサーバーとクライアントイベントのトリガーを示しています-
Webサーバーへの接続
Web Socketサーバーは、Web Socketクライアントと同様に機能します。 イベントに応答し、必要に応じてアクションを実行します。 使用されるプログラミング言語に関係なく、すべてのWeb Socketサーバーは特定のアクションを実行します。
Web Socketアドレスに初期化されます。 * OnOpen、OnClose、、および *OnMessage イベントを処理し、クライアントにもメッセージを送信します。
Web Socket Serverインスタンスの作成
すべてのWeb Socketサーバーには、有効なホストとポートが必要です。 サーバーでWeb Socketインスタンスを作成する例は次のとおりです-
var server = new WebSocketServer("ws://localhost:8181");
任意の有効なURLを、以前に使用されていなかったポートの仕様で使用できます。 接続されたクライアントの記録を保存しておくと、さまざまなデータの詳細を提供したり、それぞれに異なるメッセージを送信したりするのに非常に便利です。
Fleckは、 IwebSocketConnection インターフェイスを使用した着信接続(クライアント)を表します。 誰かが当社のサービスに接続または切断するたびに、空のリストを作成または更新できます。
var clients = new List<IWebSocketConnection>();
その後、 Start メソッドを呼び出して、クライアントが接続するのを待つことができます。 起動後、サーバーは着信接続を受け入れることができます。 Fleckでは、Startメソッドには、イベントを発生させたソケットを示すパラメータが必要です-
server.Start(socket) =>
{
});
OnOpenイベント
*OnOpen* イベントは、新しいクライアントがアクセスを要求したことを判断し、初期ハンドシェイクを実行します。 クライアントをリストに追加する必要があり、おそらくIPアドレスなど、それに関連する情報を保存する必要があります。 Fleckは、そのような情報と接続の一意の識別子を提供します。
server.Start(socket) ⇒ {
socket.OnOpen = () ⇒ {
//Add the incoming connection to our list.
clients.Add(socket);
}
//Handle the other events here...
});
OnCloseイベント
*OnClose* イベントは、クライアントが切断されるたびに発生します。 クライアントがリストから削除され、切断について残りのクライアントに通知されます。
socket.OnClose = () ⇒ {
//Remove the disconnected client from the list.
clients.Remove(socket);
};
OnMessageイベント
クライアントがサーバーにデータを送信すると、 OnMessage イベントが発生します。 このイベントハンドラー内では、着信メッセージをクライアントに送信するか、おそらくそれらの一部のみを選択できます。
プロセスは簡単です。 このハンドラは、パラメータとして message という名前の文字列を取ることに注意してください-
socket.OnMessage = () ⇒ {
//Display the message on the console.
Console.WriteLine(message);
};
Send()メソッド
Send()*メソッドは、指定されたクライアントに目的のメッセージを送信するだけです。 Send()を使用すると、テキストデータまたはバイナリデータをクライアント全体に保存できます。
*OnMessage* イベントの動作は次のとおりです-
socket.OnMessage = () ⇒ {
foreach (var client in clients) {
//Send the message to everyone!
//Also, send the client connection's unique identifier in order
//to recognize who is who.
client.Send(client.ConnectionInfo.Id + " says: " + message);
}
};