昔、効果を迅速に達成するために、ポーリングを使用してオンラインチャット機能を実装しました。その後、誤ってソケットに連絡しました。ソケットに関しては、私の理解はプロセス間コミュニケーションです。まず、サーバーとクライアントが必要です。サービスは、プロセスを見つけるために特定のIPポートに起動して耳を傾けます。クライアントがソケットを開き、IPポートを割り当ててサーバー上のIPポートに接続するため、2つのプロセス間の通信を実行できます。理解するために下に簡単な絵を描きましょう。
しかし、今日、私はまだWebSocketの使用を共有し、最初に効果を置き、次にコードを貼り付けることを計画しています。
最初のステップは、ソケットサービスを開始することです。
次に、クライアントに接続してサーバーに接続し、チャットルームに参加し、Googel(Bai Yujing、Shen Lang)、Firefox(Chu Liuxiang)、およびI(Li Xunhuan)を使用してテストします。
*
*********************切断。
************************個別。
以下は、このテストのソースコードです。
サーバ:
Public Class testWebsocketController:Controller {websocketserver server; List <SessionInfo> listsession = new list <SessionInfo>(); public ActionResult index(){return View(); } //サービス開始public string start(){var ip = "192.168.1.106"; var port = "1010"; server = new websocketserver(); if(!server.setup(ip、int.parse(port)))){return "websocket service start error"; } //新しいセッションConnection Server.NewSessionConnected += sessionConnected; // session close server.sessionclosed += sessionclosed; // server.newmessagereceived += messagereceivedを受信します。 if(!server.start()){//リスニング失敗メッセージの処理「エラー」を返します。 }「成功」を返します。 } /// <summary> ///セッションclose /// </summary> /// <param name = "session"> </param> /// <param name = "value"> </private void sessionclosed(websocketsession session、suptersocket.socketbase.closeReason){debug.writeline(devug.writeline(」 {2:HH:mm:ss} "、value、session.remoteendpoint、datetime.now); // sendmsgtoremotepoint(sessionId、sessionId + "disconnected"); var sessionRemove = listsession.firstordefault(s => s.sessionId == session.sessionId); ListSession.Remove(SessionRemove); } /// <summary> ///セッション接続/// </summary> /// <param name = "session"> </param> private void sessionconnected(websocketsession Session){debug.writeLine( "new SessionID:{1}時間:{2:HH:MM:SS}" listSession.add(new SessionInfo {sessionId = session.sessionId、endpoint = session.remoteendpoint.toString()}); } /// <summary> ///メッセージ受信/// </summary> /// <param name = "session"> </param> /// <param name = "value"> </param> private void messageReceived(websocketsession Session、string value){// deserialize message content var message = jsonializeobject <メッセージ<メッセージ<メッセージ); foreach(listsession in listsession){/// mession sendmsg(item.sessionid、string.format( "{0} send message:{1}"、message.name、message.message)); }} // <summary> ///メッセージ/// </summary> /// if(appsession!= null)appsession.send(msg); } public class messageinfo {public string name {get;セット; } public string message {get;セット; }} public class sessioninfo {public string sessionid {get;セット; } public string endpoint {get;セット; } // public string name {get;セット; }}}クライアント:
@{viewbag.title = "index";} <h2> index </h2> <script src = "../ scripts/jquery-1.8.2.js"> </script> <input type = "text" id = "txtname"/> <inputタイプ= "ボタン" value = "チャットルーム" id = "btndisconnection" /> <入力タイプ= "text" id "=" txtinput " /> <input type =" button "value =" send "id =" btnsend " /> <div id =" msg "> < /div> <script =" javascript "type =" text /javascript "> var ws; var url = "ws://192.168.1.106:1010" $( "#btnconnection")ブラウザ "); //さまざまなコールバックws.onopen = function(){$("#msg ")。append($("#txtname ")。 } onmessage( "#msg")。 }); //$("#btndisconnection").click(function(){// $( "#msg")。append($( "#txtname")。val() + "チャットルームを残す<br />"); // ws.close(); //}); $( "#btnsend")。クリック(function(){if(ws.readystate == websocket.open){var message = "{/" name/":/" + $( "#txtname")。 $( "#msg")要約します
上記は、編集者が紹介したオンラインチャット機能を実装するためにJavaでWebSocketを使用することです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!