フロントエンド通信(三種類)
-
ネットのノードのフロントエンドの通信モジュール
-
H5は、携帯端末使用のWebSocketを設け[]
-
PC- の低いバージョンsocket.ioを使用するようにブラウザを(今流行の外に、排除)
-
通信
-
サーバー:合計サーバー例:テンセントQQのサーバーの完全な1
-
クライアント:シングルユーザ・アプリケーション例:QQの複数の皆
-
ソケット
/ * 合計サーバー * / constのネット =必要( '純')// サーバー/クライアントの作成のために、ネットモジュールを導入 CONST = net.createServerサーバーを()// 作成し、サーバ のconstホスト= 'localhost'の// ドメイン作成 ポート5000 = CONST //は、ポートを作成 LET COUNT = 0 CONSTクライアント = {} server.on( '接続'、(クライアント)=> { // 接続イベントを介してクライアントに接続されたサーバ // クライアントがそれぞれの接続を意味しますクライアント // クライアントは、より多くのです // 問題:名前の数字数:クライアントは、混乱が解消されます client.name COUNT = ++ // 各クライアントに数えるその名前を入れて クライアント[client.name] =クライアント// クライアント格納されているにクライアントの各 client.on(「データ」、MSG => { // サーバがクライアントによってデータイベントを送信した情報を受信する // MSGクライアント情報から送られ、この情報はバイナリメッセージ にconsole.logを( `$ {client.name}クライアントは言う:$ {msg.toString()}`) boardCaster(クライアント、MSG); }) client.on ( 'エラー'は、エラー=> { // サーバ処理エラーが報告された :+( 'エラーは'にconsole.logをエラー) }) client.on( '閉じる'、()=> { // サーバがクライアントを受け取りますオフライン通常の動作 の削除クライアントは[client.name] // クライアントクライアント格納する場所からオフラインを削除する にconsole.log( `クライアントがダウンしている$ {} client.name`) }) }) // 私たちは、[チャットルーム]すべての上に表示クライアント・サーバ・インタフェースから送信されたすべての情報が必要- 「放送 // 放送は、すべてのクライアントであり、クライアントがサービス終了インタフェースに表示される情報送信され た機能(boardCasterをクライアント、MSG){ // 関数の放送 用(VARのキーでクライアント){ // クライアント[キー] .WRITE( ``人)が//サーバ側の情報の書き込み何言っ クライアントを[キー] .WRITE( `クライアント前記端$ {client.name}:$ {msg.toString()} `)// サーバー上の情報の書き込み } } // 監視サーバ server.listen(ポート、ホスト、()=> { はconsole.logを(`サーバーの実行:HTTP:// $ {ホスト}:$ {} `ポート) })
- client.js
/ * クライアント サービス:を次に入力端子クライアント、及びサーバ輸送にコンテンツを送信する 溶液は:ノードは、モジュールと呼ばれるreadlineのために提供される単一の行[]の内容を読み出すためのコマンドを読み取る * / constのNETを = ( 'ネット')が必要です// サーバー/クライアントの作成のために、ネットモジュールを導入しました )constはnet.Socketソケット=を(// クライアント作成 のconstホスト= 'localhost'の constのポート = 5000 のconstのreadline =必要( 'readlineの' )//は、リードコマンド // クライアント接続サーバー Socket.connect(ポート、ホスト、()=> { socket.write( 'こんにちはライン上のI')//がサーバーにメッセージを送信する )} constのRLがあります = readline.createInterface({ INPUT:process.stdin、 出力:process.stdout }); (Socket.on 'データ'、MSGは=> { // 、データイベントを介して、クライアント表示情報、及びサーバに情報を送信する にconsole.log(msg.toString()) と言う() }) socket.on( 'エラー'(エラー)=>は{ // エラー処理は、報告 にconsole.logを('エラーは次のとおりです。 '+ エラー) }) socket.on( '「クローズ、()=> { // 通常のクライアントのオフライン コンソール.logの( `クライアントoffline`) }) 関数言う(){ rl.question(:> '入力'、(回答)= { IF(答え=== 'BYE' ){ //は正常を表しますライン socket.destroy()// クライアント破壊エンド() // rl.end()RL閉じるコマンドを読ん } 他{ //は、通常のチャットを示している (答)socket.writeを } ;}) }
/ * サーバ通信 * / constのWebSocketを =( 'WS')が必要です// 導入WSモジュール // 作成サーバ // =(オプション)オプションのWebSocket新しい新しいWSをconstがオブジェクトである のconst WS = 新新WebSocket.Server({ ポート: 5000 、 ホスト: '10 .31.158.70 ' }) LET COUNT = 0 CONSTクライアント = {} ws.on( '接続」、クライアント=> { client.name = ++ COUNTの クライアントは[client.name] = クライアント client.on ( 'メッセージ'、MSG => { //サーバーは、クライアント・メッセージ・イベントによって送信された情報を受信する // これは、メッセージイベントです :はconsole.log(MSGを} {$ `` $ {} client.nameクライアントが言う) boardCasterは(クライアント、MSG) }) クライアント.on( '閉じる'、()=> { 削除し、クライアントが[client.name] はconsole.log( `$ {client.name}クライアントはdown`)である }) }) 関数boardCaster(クライアント、MSG){ /を/ これは、使用sendメソッドである ため(VARのキーでクライアント){ クライアント[キー] .send( `$ {} client.nameクライアントは言う:MSGは} {$`) } }
- wsClient.js
/ * このファイルは、クライアント接続用の通信サーバがある * / constのURL = '://10.31.158.70 5000 WS' のconst WS = 新新のWebSocket(URL) ws.onopen =()=> { // 最初の接続 WS .send( '私はXXXのスタジオに入っ' ) } ws.onmessage = MSG => { VARコンテンツ= document.querySelector( '#コンテンツ' ) はconsole.log(MSG) content.innerHTML + + = msg.data ' A ' }