2011-12-20 1 views
5

PHP와 같은 소켓 IO를 사용하는 것과 관련하여 몇 가지 질문이 있습니다. nodejs/socket io를 처음 사용하므로 거의 알지 못하므로 지난 며칠 동안 사용하기 시작했습니다. 나는 이것을 내 웹 사이트에 구현할 예정이다. (지금은 테스트 예제를 거의 만들지 않았다.)Node.js + 소켓 IO + Apache + PHP는 URL에서 포트를 제거 하시겠습니까?

질문 : 현재 포트를보기 위해 로컬 호스트에 포트를 추가해야합니다. 라이브 웹 사이트 일 때이 기능을 사용할 수 없으며, 사용할 때이 기능을 사용할 수 없습니다. PHP는 페이지 (그냥 html로 예제를하고있다) 만약 내가 내 호스트 io 서버에 대한 포트 4000을 사용하고 있습니다 : localhost : 4000,하지만 갈 수 있어야합니다 : localhost : 8888/mysitefolder (8888 내 MAMP를위한 포트, PHP 및 모든 것) 사람들이이 문제를 해결 한 질문에서 본 적이 있지만 내 자신을 위해 일할 수 없습니다.

chat.js

var app = require('express').createServer(), 
     io = require('socket.io').listen(app); 

app.listen(4000); 


var users = []; 

app.get('/', function (req, res) { 
res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 

socket.emit('connected'); 

socket.on('userID', function (userID) { 
users.push(userID); 
}); 


socket.on('message', function (message) { 
socket.broadcast.emit('message-response', { data: message}); 
}); 

}); 

index.html을

<title>Testing</title> 
<script src="/socket.io/socket.io.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 

function mktime(){ 
    var newDate = new Date; 
    return newDate.getTime(); 
    } 

    function appendMessage(data) 
    { 
    $("body").append(data+"<br />"); 
    } 

    var socket = io.connect('http://localhost:4000'); 
    socket.on('connected', function() { 

    //select id from database in real environment 
    socket.emit("userID", mktime()); 

    }); 



    socket.on('message-response', function (message) { 

    appendMessage(message.data); 

}); 


    $(document).ready(function(){ 
     $('#input').keypress(function(event) { 
     if (event.keyCode != 13) return; 
      var msg = $("#input").val(); 

      if (msg) { 


     socket.emit('message', msg); 
     appendMessage(msg); 

     $("#input").val('').focus(); 
     } 
    }); 
    }); 



    </script> 

    <body> 
    <input type="text" id="input"><br> 
    </body> 
+0

'내가 할 수 있어야 할 것 : localhost : 8888/mysitefolder'란 무엇을 의미합니까? 당신이해야 할 일은 "localhost : 4000/socket.io/socket.io.js"와 같은 js 파일을 참조하는 것뿐입니다. Express 서버가 없어도 JS 코드로 색인 파일을 제공 할 수 있습니다. – alessioalex

+0

그럼 localhost : 8888은 MAMP가 실행되는 곳입니다. php와 모든 것에 대해 mysitefolder는 PHP 파일이 작동하는 폴더입니다. 또한 내 두 파일에서 무엇을 변경합니까? 방금 시도했는데 오류가 있습니다. (내가 말했듯이, 이것으로 새로운 것이므로 모든 것이 어떻게 작동하는지 잘 모르겠다.) –

+0

신경 쓸 일이 없다. 감사. –

답변

3

난 당신이 하드 코드 포트 또는 URL에 원하지 않는 것을 의미 생각 : 여기

내 코드입니다 의뢰인? 그게 맞습니까?

socket.io 0.8.7에서 제공하지 않아도됩니다. 다음을 사용하면 자동으로 검색됩니다.

var socket = io.connect(); 
+0

그게 나를 위해 작동하지 않았다. –

+0

안녕 딜란, 바로 그 때 귀하의 요청을 받았습니까? 나는 URL과 포트를 제공하지 않는 곳에서 emit을 사용하여 작동하는 socket.io를 가지고있다. 나는 클라이언트가 아닌 서버 측에서만 포트를 제공한다.

+0

그건 내 초기 문제가 아니었다. 나의 초기 문제는 당신이 바에서 URL 자체에 포트가 있습니다. socket.io 스크립트를 참조했기 때문에 그것이 없으면 작동하지 않는 유일한 이유를 알지 못했습니다. 솔루션이 바뀌고 있습니다. to :