HTML5 마스터Q&A는 HTML CSS JavaScript 개발자들의 질문과 답변을 위한 커뮤니티 사이트입니다.

자바스크립트 소켓 질문 (send 보내는 과정) + 추가

0 추천
지금 아래는 자바스크립트부분이구요
$(document).ready(function(){
		if(!("WebSocket" in window)){
			$('#chatLog, input, button, #examples').fadeOut("fast");
			$('<p>Oh no, you need a browser that supports WebSockets.</p>').appendTo('#container');
		}else{
			connect();
		}
	});
	
	function connect(){
		try{
			
			var socket;
			var socket = new WebSocket("ws://192.168.0.2:1000");

			message('<p class="event">Socket Status: '+socket.readyState);

			socket.onopen = function(){
				message('<p class="event">Socket Status: '+socket.readyState+'(open)');
			}
			socket.onmessage = function(msg){  
	            message('<p class="message">Received: '+msg.data);  
	        }  
	  
	        socket.onclose = function(){  
	             message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');  
	        }
		}catch(exception){message('<p>Error'+exception);}
		
		function message(msg){
			$('#chatLog').append(msg+'</p>');
		}
		
		function send(){  
			  
		    var text = $('#text').val();  
		    if(text==""){  
		        message('<p class="warning">Please enter a message');  
		        return ;  
		    }  
		    try{
		    	this.send = function (message, callback) {
		    	    this.waitForConnection(function () {
		    	        ws.send(message);
		    	        if (typeof callback !== 'undefined') {
		    	          callback();
		    	        }
		    	    }, 1000);
		    	};

		    	this.waitForConnection = function (callback, interval) {
		    	    if (ws.readyState === 1) {
		    	        callback();
		    	    } else {
		    	        var that = this;
		    	        // optional: implement backoff for interval here
		    	        setTimeout(function () {
		    	            that.waitForConnection(callback, interval);
		    	        }, interval);
		    	    }
		    	};
		        socket.send(text);  
		        message('<p class="event">Send: '+text)  
		    } catch(exception){  
		    message('<p class="warning"> Error:' + exception);  
		    }  
		  
		    $('#text').val("");  
		}

		$('#disconnect').click(function(){
			socket.close();
		});

		$('#text').keypress(function(event){
			if(event.keyCode == '13'){send();}
		});
	}
이제 아래는 html 부분입니다
<div id="wrapper">  
    <div id="container">  
        <h1>WebSockets Client</h1>  
        <div id="chatLog">  
        </div>
        <p id="examples">e.g. try 'hi', 'name', 'age', 'today'</p>  
  
        <input id="text" type="text" />
        <button id="disconnect">Disconnect</button><br> 
        <input type="text" id="inputMessage" value="Hello, Web Socket!"><button id="sendButton">Send</button>
        <pre id="output"></pre>
    </div>
</div>
head에 스크립트로 jquery 넣었구요 보낼 내용 입력하고 엔터누르면 Error:InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state. 이렇게 뜨네요.. 연결되는 컴에 보면 log 같은것들이 다 뜨고 그 뒤에 아이피가 연결됐다고 뜨네요 http://html5korea.com/%EC%9B%B9%EC%86%8C%EC%BC%93websocket-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0%EA%B0%95%EC%9D%98%EB%B2%88%EC%97%AD/ 여기보고한건데 제가 잘못된건가요?
 
+ 서버에서 메시지를 보내면 Closed 되버립니다..왜이런걸까요
생초보 (120 포인트) 님이 2015년 10월 19일 질문
생초보님이 2015년 10월 19일 수정

4개의 답변

0 추천

어쩌면 이 : 192.168.0.1

재은 님이 2017년 6월 30일 답변
0 추천

I would like more information about this, because it is very nice., Thanks for sharing.

lindarose11 (420 포인트) 님이 1월 26일 답변
0 추천

This is a great article. It gave me a lot of useful information. thank you very much. 
Vex 3 

lindarose11 (420 포인트) 님이 1월 26일 답변
0 추천

This is extremely helpful info!! Very good work. Everything is very interesting to learn and easy to understood. Thank you for giving information.

 

Fireboy And Watergirl  

lindarose11 (420 포인트) 님이 1월 26일 답변
...