2013-02-21 3 views
0

socket.io로 google/facebook 채팅 복제를 만들려고합니다.socket.io 개인 및 그룹 채팅

사용자가 서버에 연결하면 사용자 ID 뒤에 이름이 지정된 방에 사용자를 배치합니다 (사용자가 여러 탭을 열면 모든 탭에서 모든 메시지가 동일한 방으로 이동하고 모든 메시지가 수신됩니다). A가 B에게 메시지를 보내면 B의 이름을 가진 방으로 브로드 캐스트합니다. UI에서는 발신자의 ID로 각 채팅 창을 열어 사용자가 메시지를 받으면 발신자의 ID가있는 창을 찾고 새 창으로 업데이트합니다. 메시지. 단순한.

이제 A와 B는 C와 D를 그룹 채팅에 참여하도록 초대합니다. 채팅이 그룹 채팅으로 바뀝니다. 나는 여기 붙어있다. 어떻게 그런 시나리오를 처리합니까? 클라이언트 UI와 서버에서 채팅을 어떻게 추적합니까?

답변

0

임의의 값 (예 : id)으로 정렬 된 채팅의 사용자를 그룹으로 묶을 수 있습니다 (일부 구분 기호 포함). 따라서 ID가 USERA 인 사용자 A와 ID가 USERB 인 사용자 B가있는 경우이를 포함하는 공간은 USERA-USERB가됩니다. 이 스키마는 userID에 대시가없는 경우에만 작동합니다. 사용자 C가 채팅에 참여하여 ID가 ​​USERA-USERB-USERC 인 회의실을 열고 모든 사용자를 회의실에 추가 한 다음 이전 대화의 메시지를 다시 사용자에게 다시 브로드 캐스트합니다.

사용자 A와 사용자 B에 대한 새로운 대화가 열리므로 원하지 않을 수도 있습니다. 이 경우 객실 ID를 변경하려면 방을 뒤섞어 놓고 (마지막으로 x 메시지를 새 사용자에게 다시 브로드 캐스팅해야합니다.)

또 다른 참고 사항으로, 클라이언트가 이벤트와 관련된 채팅을 알 수 있도록 클라이언트에게 전송되는 모든 이벤트가있는 연결된 방 ID를 보내야합니다.

+0

그래, 같은 줄로 생각했지만 클라이언트 측에서 업데이트 된 roomID를 관리하는 것이 까다로워졌습니다. 나는 아직도 해결책을 찾고있다. 운동을하면 구체적인 내용을 알려 드리겠습니다. – SamSerious

관련 문제