U3D : 간단한 테스트 통신 웹 소켓을 사용하여

플러그인을 사용하여 1.10 besthttp

U3D 버전 : 5.4.0

코드 : 온라인 코드를 찾고, 자신의 게으른 단지에서 간단한 테스트를 작성하지 않았다

사용 은 System.Collections 단계;
사용 System.Collections.Generic 단계;
사용 UnityEngine 단계;
사용 BestHTTP 단계;
사용 BestHTTP.WebSocket 단계;
사용하여 시스템;
사용 BestHTTP.Examples 단계;
사용 UnityEngine.UI 단계;
사용 System.Text 단계; 

공공  클래스 WSMgr : MonoBehaviour 
{ 

    // 공공 문자열 URL = "WS : // localhost를 : 8080 / WEB1 / 웹 소켓"; 
    [SerializeField]
     전용  문자열 URL;
    공공 InputField의 MSG;
    공공 텍스트 콘솔; 

    은밀한웹 소켓 웹 소켓, 

    개인  무효 시작 () 
    { 
        은 init (); 
        인쇄 ( " 실행 " );
         // WebSocket1 (); 
    }
     무효 업데이트 () 
    { 
        인쇄 (webSocket.IsOpen을); 

       
    } 


    무효 WebSocket1을 () 
    { 
        웹 소켓 웹 소켓 = 새로운 새로운 웹 소켓 ( 새로운 새로운 열린 우리당 (URL을));
         // webSocket.OnOpen ...
         // 등록 이벤트 후, 우리는 연결을 시작할 수 있습니다 
        ; webSocket.Open을 ()
         // 이 단계 이후에, 우리가하는의 OnOpen 이벤트를 우리가 수 있습니다 받게됩니다 서버에 메시지를 보내기 시작
        webSocket.Send ( " 서버에 메시지 " );
        바이트 [완충액 = 새로운  바이트 [ 1024 ]; 
        webSocket.Send (버퍼); 
        // 所有通信完成之后,就关闭连接
        webSocket.Close (); 
    } 




    개인  공극 초기화 () 
    { 
        웹 소켓 = 새로운 웹 소켓 ( 새로운 열린 (URL)); 
        webSocket.OnOpen + = 의 OnOpen; 
        webSocket.OnMessage + = OnMessageReceived; 
        webSocket.OnError + = 의 OnError;
        webSocket.OnClosed + = OnClosed; 

        webSocket.Open (); 
        인쇄 ( " 执行这里" ); 
        
    } 

    개인  공극 antiInit () 
    { 
        webSocket.OnOpen = ; 
        webSocket.OnMessage = ; 
        webSocket.OnError = ; 
        webSocket.OnClosed = ; 
        웹 소켓 = ; 
    } 

    개인  무효 setConsoleMsg ( 문자열 MSG) 
    { 
        console.text =" 메시지 : " + MSG; 
    } 

    공공  무효 연결 () 
    { 
        webSocket.Open (); 
        프린트 (웹 소켓 ! = null이 ); 
    } 

    전용  바이트 [] getBytes ( 문자열 메시지) 
    { 

        바이트 [완충액 = Encoding.Default.GetBytes (메시지);
        리턴 버퍼; 
    } 

    공공  무효 보내기 () 
    { 
        webSocket.Send (msg.text); 
    } 

    공공  무효은 (보내기 문자열 STR)를 
    {
        webSocket.Send (STR); 
    } 

    공공  무효 닫기 () 
    { 
        webSocket.Close (); 
    } 

    # 지역 웹 소켓 이벤트 처리기 /// <요약> /// 웹 소켓이 열려, 우리는 데이터를주고받을 준비가되면 호출
     /// </ 요약> 무효 의 OnOpen (웹 소켓 WS) 
    { 
        debug.log를 ( " 연결 " ); 
        setConsoleMsg는 ( " 연결 " ); 
    } /// <요약> ///

     
     
    

     
    우리는 서버에서 문자 메시지를받을 때 호출
     ///  </ 요약> 
    무효 OnMessageReceived (웹 소켓 WS, 문자열 메시지) 
    { 
        debug.log를 (메시지); 
        setConsoleMsg (메시지); 
    } 

    ///  <요약> 
    /// 웹 소켓 폐쇄 때 호출
     ///  </ 요약> 
    공극 OnClosed (웹 소켓 WS, UINT16 코드 스트링 메시지) 
    { 
        debug.log를 (메시지 + " 닫기 " );
        //    setConsoleMsg (메시지);
        // antiInit ();
        //   초기화 (); 
    }
     //OnApplicationQuit 무효 
    무효 OnApplicationQuit을 () 
    { 
        // 인쇄 (webSocket.IsOpen);
        // (! 웹 소켓 = 널 (null) && webSocket.IsOpen)의 경우
         // { 
        인쇄 ( " 종료 " );
        //     webSocket.Close ();
        //     // antiInit ();
        // } 

    } 
    개인  무효 들의 OnDestroy () 
    { 
        인쇄 ( " 32 파괴 " ); 

        // (웹 소켓! = NULL && webSocket.IsOpen)의 경우
         // {
         //    인쇄 ( "32 파괴");
        //     webSocket.Close ();
        //     // antiInit ();
        // } 
    } 

    ///  <요약> 
    /// 오류가 클라이언트 측에서 발생한 때 호출
     ///  </ 요약> 
    공극 의 OnError (WS 웹 소켓 예외 예) 
    { 
        문자열 에서 errormsg = 문자열 .Empty;
# 만약 ! UNITY_WEBGL을 || UNITY_EDITOR
         경우 (ws.InternalRequest.Response! = null이 ) 
            에서 errormsg = 문자열 .Format ( " 서버에서 상태 코드 : {0} 및 메시지 : {1}" , ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message)
 #endif 다음 
        ; debug.log를 (에서 errormsg) 
        setConsoleMsg (에서 errormsg) 
        // antiInit ();
         // 초기화 (); 
    } 

    #endregion 
}

스크립트 방법 대응하는 것은, WebGL을 직접 테스트에 사용할 수있는 PC 측에 전환 할 필요가 없습니다 않는, 해당 버튼을 채우기 위해
HTTP : //ruyice.com/test을 나는이 웹 소켓의 URL에 있던 서버 테스트 주소 테스트, 자신의 서버를 구축 할 귀찮게하지 않습니다

WS : URL WS ​​테스트 스크립트 URL에 위의 이미지를 입력 //demos.kaazing.com/echo을

테스트 결과 :

 

 제거 직접적인 방법에 가까운, OnDestory ()과의 OnApplicationQuit () ()에서 websocket.close는, 다음 오류 않을 경우 아무 영향을주지 않으면 서 문제, 시험 중에 발생, 실행하지만, 항상 불편 보았다 동시에 프로그램을 끄 또한 웹 소켓을 해제하고, 그렇게하다

 

추천

출처www.cnblogs.com/zbyglls/p/11122146.html