2014-04-28 2 views
0

sails.js (0.10.0-rc5)의 최신 베타 버전을 사용하고 있습니다.sails.js + socket.io : 클라이언트에서 표준 sail.js/socket.io 메시지를받을 수 없습니다.

sails new Test 
cd Test 
sails generate api user 

파일 자산 /의 JS를 만들기/내 문제

var socket = io.connect('http://localhost:1337'); 
socket.on('connect',function() { 
    console.log('connected'); 
    socket.request('/user',{}, function(users) { 
     console.log(users); 
    }); 

    socket.on('message', function(msg) { 
     console.log("Message: " + msg); 
    }); 

    socket.on('user', function(msg) { 
     console.log("User: " + msg); 
    }); 
}); 

을 console.log ("사용자 :"+ MSG)를 test.js;console.log ("Message :"+ msg);은 사용자를 만들거나 업데이트 할 때 메시지를받지 못합니다. 설명서 및 소개에 따르면 sails.js 동영상이 socket.io 메시지는 자동으로 전송되어야합니다.

내 클라이언트에서 sails.js/socket.io 메시지를 성공적으로 수신하려면 무엇이 누락 되었습니까?

+0

이 문제를 해결하기 위해 무엇을 했습니까? – securecurve

답변

3

최신 NPM 버전을 설치 한 경우 Sails socket client의 최신 버전을 사용할 수 있습니다. page on Github에서 기본 사용법을 확인한 다음 PubSub section of the Sails migration guide을 확인하십시오.이 버전은 Sails v0.9.9x (Intro to Sails.js 비디오가 표시)와 최신 버전의 차이점을 설명합니다. 결국, 당신의 코드가 더 좋아 보일 것입니다 :

// Note--the latest sails socket client connects automatically! 

// Get all of the existing users--also subscribes to socket events 
// for those users 
io.socket.get('/user', function serverResponded (body, sailsResponseObject) { 
    console.log(body); 
}); 

// When a socket message about a user is received, display it 
io.socket.on('user', function(data) { 
    console.log(data); 
}); 

노트

  1. 에 대한 .watch() 마이그레이션 가이드 섹션에 특별한주의를 지불; 즉, create 이벤트가 자동으로 더 이상 수신되지 않고 서버 코드에서 (User 모델의 경우) User.watch()을 사용하여 구독해야한다는 의미입니다.
  2. 일반적으로 자신이 트리거하는 작업에 대한 소켓 메시지는 표시되지 않으므로 메시지 처리 코드가 작동하는지 테스트하려면 두 개의 창 (또는 탭)을 열어서 다른 하나의 이벤트를 보면서 하나의 요청.
  3. 소켓 요청을 할 때만 소켓 이벤트에 가입해야합니다.; /users에 대한 AJAX 호출은 모든 현재 사용자를 검색하지만 이벤트에 가입하지는 않습니다. io.socket.get을 사용하여 완료해야합니다.
관련 문제