2011-09-07 6 views
1

나는 Node.js를 새로운 해요/socket.io 그래서 나는 정말 내가 뭘하는지 모르겠지만, 나는 내 서버 측이있어 :node.js/socket.io를 사용하는 클라이언트 측 tcp?

var app = require('net') 
, fs = require('fs') 


var server = app.createServer(function (socket) { 
    socket.write("Echo server\r\n"); 
    socket.pipe(socket); 
    socket.on('data', function(data) { 
    console.log(data); 
    }); 
}); 

var io = require('socket.io').listen(server) 

server.listen(81); 

그래서 TCP 서버 작품 nc localhost 81을 사용하여 데이터를 보낼 때. 그러나 스크립트 태그를 사용하여 서버 측에서 웹 사이트의 tcp 서버에 데이터를 연결하고 보내는 방법을 모르겠습니다. 그렇다면 클라이언트 측은이 TCP 서버에 연결하여 데이터를 전송하는 것이 무엇입니까?

감사합니다.

새로 추가 된 코드 :

서버 :

var app = require('net') 
    , fs = require('fs') 

var sockets_list = []; 

var server = app.createServer(function (socket) { 
    sockets_list.push(socket); 
    socket.write("Echo server\r\n"); 

    socket.on('data', function(data) { 
    console.log(data); 
    for (var i = 0; i < sockets_list.length; i++) { 
     sockets_list[i].write(data); 
    } 


    }); 

    socket.on('end', function() { 
    var i = sockets_list.indexOf(socket); 
    sockets_list.splice(i, 1); 
    }); 


}); 



server.listen(81); 

클라이언트 :

내가 하나 개의 소켓과 노스 캐롤라이나 로컬 호스트 소요 웹 페이지 로딩이 : 무슨 일이 있었는지

<script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"> </script> 
<script> 
var socket = io.connect('http://localhost:81'); 

socket.on('connect', function() { 
    socket.send('hi'); 
}); 

socket.send('hi1'); 
socket.emit('hi2'); 

alert('here'); 



</script> 

81은 다른 소켓을 사용합니다. 따라서 nc는 웹 페이지가 보내는 모든 것을 표시합니다. 웹 페이지에 연결하면 경고 ('여기'); nc는 http 요청을 표시하지만, 그 밖의 것은 tcp 서버로 전송되지 않으며 웹 페이지는 상시 새로 고침 상태입니다. 왜 웹 페이지가 완전히로드되지 않고 'hi'메시지가 전송되지 않고 TCP 요청을 처리 할 수 ​​있습니까? 내 tcp 클라이언트가 내 tcp 서버와 함께 실패하지 않는 이유는 무엇입니까?

답변

3

Socket.io의 how to use 페이지에서 정확하게 수행하는 방법을 보여줍니다.

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost/'); 
    socket.on('connect', function() { 
    socket.send('hi'); 

    socket.on('message', function (msg) { 
     // my msg 
    }); 
    }); 
</script> 
+0

HTTP 요청을 tcp 서버로 보내는 것은 중요합니까? 또한 연결 한 후 새로 고침 원이 계속 이동하지 않으면 웹 페이지가 계속 이동하지 않습니다 ... 어떻게됩니까? – Derek

+4

웹 페이지에서 * raw * TCP 연결을 설정할 수 없습니다. 임의의 소켓을 열 수있는 브라우저 기능은 없습니다. Socket.io는 [WebSockets] (http://en.wikipedia.org/wiki/WebSocket)을 모방 한 크로스 브라우저 추상화 레이어를 제공합니다.이 추상화 레이어는 TCP와 비슷한 전이중 메시지 전달을 허용합니다. – josh3736

+0

k thx 나를 위해 첫 번째 부분을 설명하기 위해,하지만 난 여전히 내 TCP 서버에 연결하려고하면 웹 페이지가 완전히 완료되지 않고 내가 아무것도 보낼 수없는 이유는 혼란스러워. 위의 새 코드가 추가되었습니다. – Derek