2011-09-08 5 views
0

node.js/socket.io를 사용하여 tcp 서버를 설정했지만 클라이언트 측을 통해 연결하는 방법을 알 수 없습니다. http://socket.io/#how-to-use에서 클라이언트 코드를 시도했지만 TCP 서버에 http 요청을 보내고 연결이 완료되면 웹 페이지가 로딩 서클로드를 완료하지 않고 계속 이동합니다. 나는 HTTP 요청이 TCP 서버에 모든 헤더를 보내는 다른 소켓에서 말할 수 있지만 웹 페이지가 완전히로드되지 않고 TCP 서버에 아무것도 전달할 수 없기 때문에 연결이 설정되지 않았다고 생각합니다. 웹 페이지의 클라이언트 측을 tcp 서버에 어떻게 설정합니까?클라이언트에서 node.js/socket.io를 통해 tcp 서버에 연결하는 방법은 무엇입니까?

내 클라이언트 :

<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'); 
</script> 

내 서버 :

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); 

없이 말하려면 '안녕하세요'메시지는 TCP 서버에 도달하지 않았다.

답변

1

이것이 교차 도메인 요청 문제라고 생각합니다. localhost : 82에서 페이지를로드하지만 localhost : 81에 요청하십시오.

0

조금 늦었습니다. 그리고 stackoverflow에 대한 나의 첫 번째 답변도 있습니다.

처음에는 socket.io로 작업을 시작했을 때 같은 문제가 발생했습니다. 문제는 당신이 socket.io 모듈을 필요로하지 않는, 서버 측 코드입니다 :

var io = require('socket.io'); 

io.on('connection',function(socket){ 
    console.log('socket connected successfully'); 

    socket.on('data',function(data){ 
     console.log('data',data); 
    }); 
} 
서버가되면 다음

및 실행, 당신은 스크립트 'socket.io/socket.io.js 요청 socket.io의 클라이언트 측 라이브러리와 nodejs의 그물 '모듈'그것에서

<script type="text/javascript" src="http://localhost:81/socket.io/socket.io.js"> 

난 당신이 코어를 일치/혼합 수 있다고 생각하지 않는다 '.

희망이 도움이됩니다.

관련 문제