2013-10-13 5 views
6

HTML5/JS 응용 프로그램을 만들고 백엔드에 Azure 모바일 서비스를 사용하려고합니다.Azure 모바일 서비스 및 socket.io

소스 제어 및 npm 모듈 지원을 보여주는 ScottGu's post을 기반으로 실시간 알림 및 WebSocket 사용을 가능하게하려면 socket.io를 사용할 수 있는지 궁금합니다.

각 특정 요청에 대해 모듈을 가져 와서 사용할 수있는 방법을 알 수 있습니다 (예 : 클라이언트가 자원에 POSTS 할 때 리소스 생성을 모든 클라이언트에 브로드 캐스팅하기 위해 후크 추가).하지만 socket.io 객체를 설정하고 공유하는 방법을 잘 모르겠습니다.

NB. 나는 iOS, Windows 및 Google에 대한 푸시 기반 알림에 대한 기본 지원을 알고 있지만 (아직) 웹 기반 프로젝트에 대한 기본 솔루션을 제공하지 않으므로 socket.io (또는 SignalR-esque 상당).

답변

1

WebSocket은 Azure 모바일 서비스에서 정상적으로 작동합니다. 이는 HTTP 연결을 프레임 (더 안정적인 UDP와 유사)이있는 소켓으로 다시 "다운 그레이드"하기 때문입니다. 하지만 몇 가지주의 사항이 있습니다 :

  • Socket.IO를 사용하는 경우 브라우저/프록시는 WebSocket이 XHR로 폴백하는 것을 지원하지 않습니다. 그러나 XHR을 통한 Socket.IO는 많은 URL 끝점을 필요로하며 Azure 모바일 서비스에서 실패합니다. https://github.com/learnboost/socket.io-spec의 Socket.IO 프로토콜 사양 세부 정보
  • Linux 상자가 필요한 Socket.IO에서 서버 팜을 지원하려면 Redis (redis.io)를 사용해야합니다. 현재 Windows 플랫폼에서만 실험용 빌드를 사용하고 있습니다.

WebSocket을 지원하지 않는 브라우저/프록시에서 오류가 발생하지 않도록 Socket.IO 서버 전용 다른 시스템 세트를 설치하려고합니다. 그런 다음 Azure Mobile Services에서 API로 POST 할 때 API는 메시지 대기열에 메시지를 대기시키고 모든 Socket.IO 서버에 메시지를 브로드 캐스팅하도록 신호를 보냅니다. Socket.IO에 대한

1

지원 시작 스크립트 확장 자세한 내용은

var path = require('path'); 

exports.startup = function (context, done) { 
    var io = require('socket.io')(context.app.server); 
    io.on('connection', function(socket){ 
     socket.on('chat message', function(msg){ 
     io.emit('chat message', msg); 
     }); 
    }); 

     context.app.get('/public/chat.html', function(req, res) { 
     res.sendfile(path.resolve(__dirname, '../public/chat.html')); 
    }); 
    done(); 
} 

를 사용하여 추가 된 참조 : http://azure.microsoft.com/blog/2014/08/26/how-to-use-socket-io-with-azure-mobile-service-node-backend/

관련 문제