2013-11-14 5 views
0

geddy 프레임 워크 (기본 채팅 예제)를 사용하여 실시간 응용 프로그램을 만들고 있습니다. 하지만 클라이언트가 연결을 시도 할 때 오류가 발생합니다.socket.io 오류가있는 geddy

var io = require('socket.io').listen(geddy.server); 
io.sockets.on('connection', function (socket) { 
    console.log("Good!"); 
    socket.emit('new', { message: 'world' }); 
    socket.on('newMessage', function (data) { 
    console.log(data); 
    }); 
}); 

와 클라이언트 측 코드 :

$(document).ready(function(){ 
    startSockets(); 
}); 

function startSockets(){ 
    var socket = io.connect('http://localhost:4004'); 
    socket.on('new', function (data) { 
    alert(data); 
    //socket.emit('newMessage', { my: 'data' }); 
    }); 
} 

내가 로컬 호스트에 연결을 시도 : 여기

는 서버 측합니다 (init.js로 파일에 대한) 코드의 4004/나는 다음이 경고를 얻을 : 크롬 콘솔 외에

debug - setting request GET /socket.io/1/websocket/G_GapksVv1J4iBZIUVe3 
    debug - set heartbeat interval for client G_GapksVv1J4iBZIUVe3 
    debug - websocket writing 7:::1+0 
    warn - client not handshaken client should reconnect 
    info - transport end (error) 
    debug - set close timeout for client G_GapksVv1J4iBZIUVe3 
    debug - cleared close timeout for client G_GapksVv1J4iBZIUVe3 
    debug - cleared heartbeat interval for client G_GapksVv1J4iBZIUVe3 
    debug - discarding transport 

이 오류를 제공합니다 :

WebSocket is closed before the connection is established. 

나는 무엇이 이들을 일으킬 수 있는지 알지 못합니다. 어떤 아이디어?

답변

0

문제는 Socket.io가 시작된 후에 서버에 연결해야하며 init.js의 코드가 실행될 때까지 서버가 시작되지 않는다는 것입니다. 기존 내장 RT 코드 (Geddy v0.11 현재)의 현재 (hacky) 솔루션은 서버가 시작된 후 Geddy가 실행하는 config 디렉토리의 after_start.js 파일에 이러한 종류의 코드를 넣는 것입니다. 이것은 Socket.io를 서버에 직접 연결하는이 경우에도 해결 방법으로 작동해야합니다.

이것은 분명히 이상적이지 않으며 v0.12의 주요 목표는 RT 통합을 수정하여 훨씬 유용하고 유용합니다. 이것이 어떻게 보이는지에 대한 의견이 있으시면 IRC (Fgedode.net의 #geddy) 나 메일 링리스트 (https://groups.google.com/group/geddyjs)에서 꼭 알아보십시오.