정적 파일, longpolling (혜성), 소켓, 여러 언어 (c, PHP, 노드)의 웹 소켓을 사용하여 여러 개의 다중 사용자/다중 룸 응용 프로그램을 작성했으며 현재 NodejS + Socket.IO에서 최상의 환경을 경험했습니다.
Socket.IO가 longpolling에서 websocket 또는 flashsocket에 이르기까지 사용 가능한 클라이언트 제한에 적응하기 때문에 쉽습니다. 그럼에도 불구하고 longpolling에 의존하지 않는 것이 좋습니다.
Socket.IO 서버를 만들고 구성하고 2 개의 이벤트를 입력하고 퇴장시킵니다 (관리하려는 나머지 이벤트 옆에 있음). 응용 프로그램의 빠른 해골이 될 것입니다. 사용자 목록, 사용자 이름 등을 제어해야하지만 socket.id로 사용자 데이터를 인덱싱하고 연결/연결 끊김 이벤트로 해시를 관리하는 작업은 쉽게 수행 할 수 있습니다. "fn"은 클라이언트 콜백 함수입니다.
var http = require('http')
, ioo = require('socket.io')
;
var app = http.createServer();
var io = ioo.listen(app);
// ... Place here Socket.IO configuration...
var port = 8080;
app.listen(port, function() { console.log('Server started'); });
io.sockets.on('connection', function(socket) {
// Management messages
socket.on('connect', function(name, fn) { connect(socket, name, fn); });
socket.on('disconnect', function() { disconnect(socket.id); });
socket.on('joinRoom', function(roomName, fn) { joinRoom(socket, roomName, fn); });
socket.on('leaveRoom', function(roomName, fn) { leaveRoom(socket, roomName, fn); });
});
...
function joinRoom(socket, roomName, fn) {
socket.join(roomName);
socket.broadcast.to(roomName).emit('serverMessage', 'a user enters');
socket.emit('message', 'You enter in room ' + roomName);
}
function leaveRoom(socket, roomName, fn) {
socket.leave(roomName);
socket.broadcast.to(roomName).emit('serverMessage', 'a user leaves');
socket.emit('message', 'You leave room ' + roomName);
}
또한 도서관이, Socket.IO rooms
어쩌면 https://github.com/learnboost/socket.io/ 당신이 찾고있는 기능의 자세한 설명은 Socket.IO 사이트를 참조하십시오 그 위에 구축되는 것 –
CometD에는 확장 성 문제가 있습니까? 아마도이 벤치 마크를 놓친 것 같습니다 : http://webtide.intalio.com/2011/09/cometd-2-4-0-webocket-benchmarks/. 귀하의 전화 번호가 CometD에 표시된 전화 번호보다 큰지 알고 싶습니다. – sbordet
예 CometD에 대한 내 견해는 동일한 벤치 마크를 기반으로합니다. CometD의 웹 소켓 벤치 마크에 만족하지만 httpLongPolling은 httpLongPoll에서 더 많은 사용자를 기다리고 있으므로 문제가되는 것 같습니다. 150 만 CCUs의 HTTPLongPolling과 WebSocket의 조합을 지원하는 솔루션 CometD 50K 사용자의 커브는 대기 시간이 기하 급수적으로 늘어남에 따라 크게 나빠질 것 같습니다. 여러 인스턴스에 대한로드 분산은 인스턴스 당 약 50,000 명의 사용자가 30 개의 인스턴스를 필요로합니다. –