Websockets-server-working

提供:Dev Guides
移動先:案内検索

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);
   }
};