2012-02-21 2 views
5

저는 C/C++ 또는 Python으로 간단한 웹 기반 채팅 서버를 구축해야하는 네트워킹 클래스의 숙제 프로젝트를 진행하고 있습니다. 파이썬은 프로젝트를 구현하는 더 쉬운 언어라고 생각했기 때문에 파이썬을 선택했습니다. 프로젝트에서 요구하는 모든 기능을 가지고 있지 않기 때문에 웹에서 찾을 수있는 모든 자료를 사용할 수 있습니다. 실제로, 교수는 실제로 웹에서 자습서를 포함하여 자료를 사용하도록 권장했습니다. 그는 네트워크 코드를 구현하는 우리의 능력을 코딩하는 능력과 관련된 프로세스를 완전히 이해했는지 여부를 테스트하지 않습니다.Python의 웹 기반 채팅 서버에 대한 자습서

프로젝트는 여러 클라이언트를 처리해야하며 여러 브라우저, 크롬, 파이어 폭스 등을 지원할 수 있어야합니다. 사용자는 연결할 브라우저에서 IP 주소와 포트를 입력 할 수 있어야합니다. 나는 어떤 자료를 찾을 수 없습니다. C에서 조금 있지만 파이썬에서는 아무것도 발견하지 못했습니다.

누구나 밖에서 완벽한 자습서를 알고 있습니까? 클라이언트/서버 명령 기반 채팅에는 충분하지만 브라우저 기반 채팅에는 없습니다.

답변

3

TornadIO을 사용하면 확인할 수 있습니다. 그 Socket.io의 파이썬 구현, Tornado에 대한 토네이도는 이벤트 중심의 파이썬 웹 서버입니다.

https://github.com/MrJoes/tornadio2

http://www.tornadoweb.org/

Socket.io

은 서버에 웹 클라이언트에서/소켓 등의 연결을 소켓에 크로스 브라우저 솔루션입니다. 이것은 서브 스크립 션과 메시지를 지원하기 때문에 채팅 서버를 수행하는 데 필요한 모든 도구를 제공합니다. 귀하의 목적에 socket.io를 사용하는 것에 대한 좋은 점은 새로운 브라우저와 오래된 브라우저가 모두 통신 할 수 있도록하기 위해 많은 전송을 시도한다는 것입니다. Websocket, Flashsocket, xhr polling, jsonp, htmlfile. 그것들은 모두 클라이언트에게 똑같이 보이는 방식으로 시도되고 사용됩니다.

Tornadio2는 새로운 Socket.io 0.7+와 호환되는 최신 버전입니다. 이 버전은 0.6과의 호환성을 깨뜨린 많은 기능을 추가했습니다. 그러나, 원래 TornadIO가 검토하고 시작하기 위해 새 버전으로 아주 쉽게 변환 할 수있는 채팅방의 예를 포함

https://github.com/MrJoes/tornadio/tree/master/examples/chatroom

+0

@jdi 나는 다소 오래된 게시물을 알고 있지만 그럼에도 불구하고이 토네이도를 사용하여 추가 된 메시지를 데이터베이스에 저장하는 방법에 대한 귀하의 의견은 무엇입니까? 스레딩 또는 다중 처리 모듈을 통합해야하고 여러 프로세스가 필요합니까? 하나는 채팅 용이고 다른 하나는 db 쿼리 용입니까? 아니면 볼 수있는 더 부드러운 방법이 있습니까? – JohnZ

+0

@ 존즈 : 작업자 스레드가 'queue.get'에서 차단되는 경로를 말하면 메시지를 받으면 데이터베이스에 추가합니다. 그렇게하면 다른 스레드의 메시지를 대기열에 던져 버릴 수 있으며 아무 것도 차단할 수 없습니다. – jdi

1

를 지금까지 내가 이해할 수를 주어진 집에 일 사람들이 도착하자입니다 network 프로그래밍 활동에 손을. 그래서 www.twistedmatrix.com 봐,
트위스트 Chat comet site using python and twisted의 몇 가지 예를 사용하는 경우,
http://lists.canonical.org/pipermail/kragen-hacks/2005-April/000409.html,
http://code.google.com/p/twisted-chat-example/ 걸릴 수 있습니다.

이 소켓은 일반 소켓 프로그래밍 http://code.activestate.com/recipes/531824-chat-server-client-using-selectselect/,
http://ankurs.com/2008/05/creating-a-simple-chat-application-with-python/을 사용합니다.

이 광고는 gevent을 기반으로합니다.

소켓 프로그래밍을 사용하지 않고 간단한 대화방 에뮬레이션의 경우 다음은 gummi의 예입니다.

실제 사용 사례는 sourceforge입니다.

관련 문제