기본적으로 학습 목적으로 Omegle.com 복제 스크립트를 작성하려고합니다. 나는 PHP/MySQL/AJAX에서 그것을하고있다.사용자를 페어링하는 방법은 무엇입니까? (Omegle.com과 유사)
두 명의 사용자를 찾고 연결하는 데 문제가 있습니다. omegle의 목적은 두 명의 사용자를 "무작위로"연결하는 것입니다.
는 내가 지금하고 있어요 것은 다음
사용자가 세션이 할당 된 웹 사이트를 입력- . 사용자가 시작 버튼을 클릭하면
- (채팅 일반, 대기,) 각 세션/사용자
- 3 주 먼저 사용자에있다가 상태를 정상 상태와 필드 "connected_to"= NULL
- 있다 "대기 중"이 지정됩니다. 그런 다음 상태가 Waiting 인 다른 사용자를 찾습니다. 하나를 찾지 못하면 루프 된 상태를 유지하고 "connected_to"가 변경 될 때까지 기다립니다. "connected_to"는 다른 사용자가 START를 클릭 한 다음 다른 사용자가 대기하고 이에 따라 세션을 업데이트 할 때 변경됩니다.
- 사용자는 한 번에 하나의 사용자에 연결할 수 있습니다 :
지금이 같은 몇 가지 문제를 가지고있다. 오메 글에서 동시에 여러 채팅을 열 수 있습니다.
- 이것이 최선의 방법인지 나는 모른다.
채팅에 대해 각 사용자가 AJAX 호출로 서버의 이벤트를 폴링 중이며 매 초마다 여러 HTTP 요청 대신 오메 글을 보았고 한 번 요청하고 응답을 기다리는 중 대답을 얻을 때까지 PHP 스크립트가 무한 반복된다는 것을 의미합니다. 루프가 시작될 때마다 set_time_limit (30)을 사용하여이 작업을 수행했습니다. 그런 다음 Ajax 통화가 다시 시작되면 다시 시작하십시오. 이 접근법이 맞습니까?
나는 많이 당신의 답변을 주셔서 감사합니다, 는
카를로스 감사
감사합니다. 진행 방법에 대한 아이디어를 나에게 주셨습니다. 하지만 당신은 내가 사용자와 일치시키기 위해 사용하고있는 절차에 대한 당신의 의견을 말하지 않았습니다. 이것을하는 고전적인 방법과 같은 더 나은 방법을 알고 있습니까? 나는 바퀴를 재발 명하고 싶지 않다. 고마워. –
또한 UPDATE의 결과를 테스트하여 쿼리가 수행되었는지 확인할 수 있습니다. 따라서 "대기 중"상태에있는 사용자와 채팅을 시작한 다른 사용자가 있다고 가정 해보십시오. 실행 : UPDATE 세션 SET status = '채팅'WHERE userid =? AND 상태 = '대기 중'입니다. 그런 다음 해당 업데이트가 1 행에 영향을 미쳤다면 사용자가 대기 중이던 것에서 채팅하는 것으로 이동 했으므로 좋다고합니다. (단락으로 밖으로이 콘텐츠를 분리하려하지만 stackoverflow의 자바 스크립트는 불쾌합니다). –