2011-12-21 3 views
1

팀 공동 작업을 허용 할 웹 응용 프로그램을 구축 중입니다. 즉, 한 팀 내의 사용자는 공유 데이터를 편집 할 수 있으며 수정 사항은 연결된 다른 팀 구성원에게 푸시되어야합니다.Socket.io를 사용하여 팀 공동 작업을 지원하는 웹 응용 프로그램 만들기

Socket.io 룸은이를 달성하는 합리적인 방법입니까?

즉 (대략 말하기)

  • 연결된 모든 팀원 (동적 제 팀원 접속시 생성됨) 같은 방에 참여한다.
  • 서버에서 수신 한 모든 편집 내용이 방에 브로드 캐스트됩니다 (지속성 외에도 등).
  • 클라이언트 쪽에서받은 편집 내용은 브라우저에 표시된 공유 데이터 을 업데이트하는 데 사용됩니다.

분명히 동일한 데이터에 대한 동시 업데이트를 처리해야합니다.

이 방법이 합리적인 방법으로 보이나요?

편집 세션 중에 공유 데이터를 보관하는 Redis 데이터베이스 (일정 간격으로 지속성 데이터베이스에 '플러시 (flush)'되는 것과 같이)를보다 강력하게 고려해야할까요?

답변

2

Socket.IO (RedisStore 사용) 및 Express.js 만 있으면됩니다. Socket.IO를 사용하면 회의실을 설정하고 회의실 당 액세스를 인증 된 사용자로만 제한 할 수 있습니다.Redis를 사용하면 프로세스 범위 밖에서 앱 규모를 만들 수 있습니다. 당신이 읽을

유용한 링크 : 그것에 대해

Handling Socket.IO, Express and sessions
Scaling Socket.IO
How to reuse redis connection in socket.io?
socket.io chat with private rooms
How to handle user and socket pairs with node.js + redis
Node.js, multi-threading and Socket.io

+0

감사합니다. 그래서,이 경우에 Redis를 사용하면 (그리고 아마도 Trello와 같은 앱에서) 사용자가 작업하고있는 실제 데이터를 저장하는 것이 아니라고 말하고 싶습니다. 대신 실제 세션 데이터 (예 : 현재 socket.io 회의실 등)를 저장하는 것입니다. 그 이유는 규모면에서 Node.js 프로세스가 두 개 이상 있고 모두 동일한 세션 데이터를 공유해야하기 때문입니다. – William

+0

그 이유 중 하나는 가장 중요합니다. 다른 하나는 Redis가 pub-sub를 할 수 있다는 것입니다. – alessioalex

+0

pub/sub는 RedisStore에서 여러 노드 간의 세션 데이터 동기화를 처리하는 데 사용됩니다. 즉 위의 예에서 팀 구성원에게 수정 사항을 방송하는 것은 내 사용자 정의 Socket.io 코드입니다. – William

관련 문제