웹소켓 질문있습니다.

by 시나공공 posted Oct 01, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

+ - Up Down Comment Print

웹소켓 서버는 총 5개로 포트번호가 다릅니다. 6080, 6081, 6082, 6083, 6084


웹소켓 클라이언트가 연결을 시도하려 넘긴값

uri = ws://192.168.0.2:  ,,,,,,   protocols = [binary]   ,,,,,,,     port = 6080


open: function (uri, protocols, port) {

            //초기값 저장

            var uriTemp = uri;

            var protocolsTemp = protocols;


            //uri생성   uriTemp = ws://192.168.0.2:6080/websockify

            uriTemp += port + '/websockify'


            var ws_schema = uriTemp.match(/^([a-z]+):\/\//)[1];

            //protocolsTemp  = binary

            protocolsTemp = this.init(protocols, ws_schema);


            //웹소켓 생성

            this._websocket = new WebSocket(uriTemp, protocolsTemp);


            ///처음 실행하면 readyState는 1로됨. 

            ///두번째 실행하게되면 6080포트에 접속 시도해서 readyState를 0으로 리턴 받음.

            ///그리고 port++을 해서 6081에 접속을 시도하고 readyState를 1로 리턴받을줄 알았는데

            ///0으로 리턴받음... 이후 모든 6082, 6083, 6084서버도 readyState를 0으로 리턴받음..

            ///이유아시는분 있으시다면 조언부탁드리겠습니다. 이제 막 접해본거라 지식이 많이 부족하네요

            var state = this._websocket.readyState;


            //웹소켓이 사용중인지 확인

            if (state !== 1) {

                console.log("already Websocket");

                port++;

                if (port > 6084)

                    return;

                else {

                      //open함수를 호출하여 1증가한 port넘버를 가진 서버에 접속을 시도한다.

                      //_websocket 초기화

                    this._websocket = null;

                    this.open(uri, protocols, port);

                }

                    

            }


            if (protocolsTemp.indexOf('binary') >= 0) {

                this._websocket.binaryType = 'arraybuffer';

            }


            this._websocket.onmessage = this._recv_message.bind(this);


            this._websocket.onopen = (function () {

                Util.Debug('>> WebSock.onopen');

                if (this._websocket.protocol) {

                    this._mode = this._websocket.protocol;

                    Util.Info("Server choose sub-protocol: " + this._websocket.protocol);

                } else {

                    this._mode = 'binary';

                    Util.Error('Server select no sub-protocol!: ' + this._websocket.protocol);

                }


                if (this._mode != 'binary') {

                    throw new Error("noVNC no longer supports base64 WebSockets.  Please " +

                                    "use the binary subprotocol instead.");


                }


                this._eventHandlers.open();

                Util.Debug("<< WebSock.onopen");

            }).bind(this);

            this._websocket.onclose = (function (e) {

                Util.Debug(">> WebSock.onclose");

                this._eventHandlers.close(e);

                Util.Debug("<< WebSock.onclose");

            }).bind(this);

            this._websocket.onerror = (function (e) {

                Util.Debug(">> WebSock.onerror: " + e);

                this._eventHandlers.error(e);

                Util.Debug("<< WebSock.onerror: " + e);

            }).bind(this);

        },


Articles

1 2 3 4 5 6 7

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5