소켓 기반의 채팅방 실현 원리
소켓 기반의 채팅방 실현 원리
복건 천주 데이터 통신국 임천산([email protected])
- 는 전문적인 WWW 서버가 필요하지 않으며, 채팅 서버에서 필요한 작업을 완성하고, 시간이 소모되는 CGI 과정을 피한다.
- 단일 프로세스 서버를 사용하면 매번 새로운 프로세스가 생길 필요가 없습니다.
- 데이터 교환은 완전히 메모리에서 진행되며 파일을 읽거나 쓸 필요가 없습니다.
- 는 정해진 시간에 리셋할 필요가 없습니다. 화면의 깜박임을 줄이고 서버에 대한 요청 횟수를 줄일 수 있습니다.
1. 채팅 서버 구현 절차
--- 다음 그림은 서버 프로그램 프로세스입니다.
/login?name=aaa&passwd=PjHIIEleipsEE /chat?sid=ZUyPHh3TWhENKsICnjOv&passwd=PjHIIEleipsEE /talk?sid=ZUyPHh3TWhENKsICnjOv&passwd=PjHIIEleipsEE /names?sid=ZUyPHh3TWhENKsICnjOv/doTalk?sid=ZUyPHh3TWhENKsICnjOv &passwd=PjHIIEleipsEE&message=hello /leave?sid=ZUyPHh3TWhENKsICnjOv&passwd=PjHIIEleipsEE
2. 클라이언트의 구체적인 로그인 과정
--- 채팅창 보기:
---브라우저의 관점에서 채팅방에 들어가는 과정을 봅시다.
---- 1.먼저 브라우저 요청 페이지:
---http://host:9148/login?name=NAME&passwd=PWD
----2.서버에서 session ID를 생성하여 암호를 확인한 후 반환:
HTTP/1.1 200 OK < > Content-TYPE: text/html < > …… ……
--- 그리고 서버가 Socket 연결을 닫습니다.
----3.브라우저는 상기 html 파일을 받은 후 세 개의 연결을 차례로 열 것입니다(그중 $sid와 $encrypt_pass는 변수입니다):
/chat?sid=$sid&passwd=$encrypt_pass /talk?sid=$sid&passwd=$encrypt_pass /names?sid=$sid
---다른 두 개의 연결이 페이지에서 발송된 후에 Socket이 닫힙니다.
---이렇게 한 번 채팅방에 로그인하면 실제로 네 번의 Socket 연결이 있지만, 로그인이 끝난 후에는chat 프레임의 Socket만 연결을 유지하고 서버에서 온 채팅 정보를 수신하는 데 사용되며, 이것이 Socket 채팅방의 관건이다.
---- 4.사용자가 로그인한 후, 서버 측은 사용자 정보를 포함하는 표를 저장했다:
[socket,name,passwd,privilige,filter,login_time,color] socket: chat socket name: passwd: privilige: filter: (reference) login_time: , color:
3. 개선이 필요한 곳
---는 현재 채팅, 귓속말, 동작 등 기본적인 채팅 기능과 사용자 명단을 필터하는 추가 기능을 제공합니다.관리 기능은 사람을 차고, IP를 조사하고, 실주를 임명하는 것을 완성했다.앞으로 개선해야 할 점은 다음과 같습니다.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3492
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.