[移動]のWebSocketサーバーを達成するために

直接のサブパッケージは、公式のWebSocketの契約を使用して達成することができ、

golang.org/x/net/websocket
あなたは、オンライン上のディレクトリ$ GOPATH / SRC / golang.org / X /ネットには、このディレクトリのgithubののダウンロードネットライブラリにこのパッケージに行っていない場合
サーバーコード:
メインパッケージ

インポート(
    " 時間" 
    、 " ログ" 
    " ネット/ HTTP " 
    " golang.org/x/net/websocket " 
、メイン(){FUNC 
    (http.HandleFunc " / " 、指数)
    http.Handle(" /用WebSocket "を、websocket.Handler(instantMessage))
    log.Println(" サーバを起動" 
    ERR: = http.ListenAndServe(" :1234 " 、ゼロ)
    log.Println(ERR)
} 
FUNC指数(RES http.ResponseWriter、REQ *http.Request){ 
    res.Write([] バイト" ハローワールド" ))
} 
instantMessage(FUNC W * websocket.Conn){ 
    VARエラーエラー
    のために{ 
        VAR応答文字列
        であれば   エラー= websocket.Message.Receive(W&返信!);誤差= ゼロ{ 
            log.Println(" 接受消息失败" 、エラー)
            ブレーク
        } 
        log.Println(" 客户端:" 、返信)
        
        MSG: = " 服务端:"+ +応答時間。.Now()文字列()
        log.Println(MSG)
        もし誤差= websocket.Message.Send(W MSG)。エラー!= nilを{ 
            log.Println(" 发送消息失败" 
            ブレイク
        } 
    } 
}

クライアントコード:

< HTML > 
< ヘッド> 
    < タイトル>学ぶ</ タイトル> 
</ ヘッド> 
< 身体> 
< スクリプトタイプ= "テキスト/ JavaScriptを" > 
    VAR たちの靴下=  ヌル;
     // するvar wsuri =「WSS://127.0.0.1 :8080 "; //は、ローカルアドレスはOHで変更することができる
     VAR wsuri =  " WS:// localhostを:1234 /のWebSocket " ; // ローカルアドレスをOHに変更することができる


    window.onload =  関数(){
         //をクライアントは、非常に簡単なハンドシェイクが成功した場合、それは、開く時]イベントWebScoketオブジェクトをトリガーするクライアント接続が正常に確立された教えてくれる、靴下用WebSocket機能を介してサーバーへの接続を確立するために、JSを見ることができます。4つのバインドされたクライアントイベントの合計。
        console.log(" オンロードのスタート" ); 
        私達の靴下=  新しい新A用WebSocket(wsuri);
         // 接続を確立した後トリガー
        sock.onopen =  関数(){ 
            にconsole.log(" 接続がトリガー接続を確立し、"  + wsuri); 
        } 
        // トリガ近い接続
        sock.onclose =  関数(E){ 
            にconsole.log(接続を閉じるは、閉じられた接続をトリガし( + e.code+  " " ); 
        } 
        // トリガメッセージ受信後
        sock.onmessage =  関数(E){ 
            にconsole.log(" メッセージを受信したトリガメッセージを受信した後:"  + e.dataを)
            のdocument.getElementByIdは(' 受信' ).innerHTML = e.data; 
        } 
        // エラー・トリガ・イベントの
        sock.onerror = 関数(E){ 
            にconsole.logは、(" エラーが発生したときにトリガ" + wsuri)
        } 
    }; 
     //靴下は、本明細書でああ与えられて閉鎖される場合
    、関数送信(){
         VAR MSG = のdocument.getElementById(' メッセージ' ).Valueのを、
        sock.send(MSG); 
    }; 
</ スクリプト> 
< H1の>クライアント< / のH1 > 
< 形態> 
    < P >送信:</ P > 
    < TextAreaのID = "メッセージ"  > Iタオ師範</ のTextArea > 
    < P >受信:</ P >
    < TextAreaのID = "受信"  > </ のTextArea > 
</ フォーム> 
< ボタンのonclick = "()を送るは、" >サーバにメッセージを送信</ ボタン> 
</ ボディ> 
</ HTML >

 

 

 

おすすめ

転載: www.cnblogs.com/taoshihan/p/12037911.html