2011-10-16 1 views
1

MAMP 서버에서 CodeIgniter를 사용하여 응용 프로그램을 개발 중입니다. on LAMP). 채팅 서버에 socket.io의 실시간 기능을 추가하려고하지만 몇 가지 문제가 있습니다. 나는 socket.io와 Mamp를 독립적으로 실행하고 실행하지만 내 클라이언트가 내 서버와 통신 할 수 없습니다.MAMP + Socket.io (node.js)와 함께 "처리되지 않은 socket.io url"오류가 발생합니다.

server.js :

<script src="http://localhost:8084/socket.io/socket.io.js"></script> 
<script type="text/javascript"> 
    // Create SocketIO instance, connect 
    var socket = new io.Socket('localhost',{ 
     port: 8084 
    }); 
    socket.connect(); 

    socket.on ('connect', function() { console.log ('Client connected'); }); 
</script> 
:

// Get the Socket.io module 
var io = require('socket.io'); 

console.log ('Chat Server started'); 

// Create a Socket.IO instance, listen on 8084 
var socket = io.listen(8084); 

// Add a connect listener 
socket.on('connection', function(client){ 

    console.log ("Server Connected"); 

}); 

내 클라이언트 스크립트 (: 나는 페이지를로드 할 때마다 "정적 콘텐츠를 제공 디버그"는 socket.io.js가 부하 벌금과 내 콘솔 말한다) Node.js를 파일을 시작한 후

, 내 콘솔이 얻을 :

Chat Server started 
info - socket.io started 

클라이언트를로드 한 후 (내 연출 http://localhost:8888에 브라우저 - MAMP에 대한 기본 포트), I는 콘솔 메시지 중 하나를 얻을 수 없지만, 대신의 꾸준한 스트림 (약마다 두 번째) : 전혀 연결되지 것처럼

info - unhandled socket.io url 

같습니다 . 또한 브라우저에서 내 JS 오류 콘솔에 오류가 없습니다. 어떤 아이디어?

+0

나는 예외가 던져지고 있는지 확인하기 위해 연결 주위에 try/catch를 시작할 것입니다. – Louis

+0

'try {socket.connect()} catch (오류) {alert (오류); }' 경고가 없습니다. –

+0

포트 3478에서 자바 스크립트를 포함하고 포트 8084에서 Socket.IO를 청취하고 8888에 콘텐츠를 제공합니다. 이러한 오류가 있습니까? 나는 새로운 버전의 Socket.IO가'new io.Socket'을위한 설정 옵션을 필요로하지 않는다고 느낀다. JS가 어떻게 포함되었는지에 따라 그것을 찾아 낸다. –

답변

4

은 socket.io 버전 0.8.5을 실행, 나는 마지막으로이 다음 코드를 사용하여 작업 있어요 :

server.js

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

app.use(express.static(__dirname + '/public')); 

app.get('/', function (req, res) { 
    res.send('Hello World'); 
}); 

app.listen(3000); 

var server = io.listen(app); 

server.sockets.on('connection', function (client){ 
    // new client is here! 
    client.send ('Now connected!'); 

    client.on('message', function() { 

    }) ; 

    client.on('disconnect', function() { 

    }); 

}); 

클라이언트 스크립트 : 모든 위로

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
<script src="/assets/js/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function(){ 

     var socket = io.connect('http://localhost:3000'), 
     text = $('#text'); 

     socket.on('connect', function() { 
      text.html('connected'); 
      socket.on('message', function (msg) { 
       text.html(msg); 
      }); 
     }); 

     socket.on('disconnect', function() { 
      text.html('disconnected'); 
     }); 

    }); 

</script> 

달리기, 내 페이지로 가면, "지금 연결되어 있습니다!"라는 메시지가 나타납니다. 거의 즉시. 또한 MAMP의 CodeIgniter를 통해 페이지를 제공하고 있습니다. 모든 것이 작동합니다!

+1

+1 귀하의 솔루션에 대한 후속을 위해, 많이 감사하겠습니다! –