Django, Comet i klient IRC
14 July 2008
Comments
Na stronie oreilly.com dostępny jest prosty klient IRCa napisany w Pythonie. Za jego pomocą możemy odbierać wiadomości z danego kanału. Skrypt ten odbiera wiadomości na bieżąco - połączenie jest otwarte i trwa aż zakończymy działanie skryptu. Za pomocą cometa w prosty sposób możemy przenieść efekty działania tego skryptu na stronę www.Oto zmodyfikowany skrypt irc.py:
import sys
import socket
import string
from pyorbited.simple import Client
orbit = Client()
orbit.event(["django, 0, /chat"], 'start')
HOST="irc.freenode.net"
PORT=6667
NICK="DjangoCometStuff"
IDENT="pytest"
REALNAME="DjangoCometStuff"
readbuffer=""
s=socket.socket( )
s.connect((HOST, PORT))
s.send("NICK %s
" % NICK)
s.send("USER %s %s bla :%s
" % (IDENT, HOST, REALNAME))
s.send('JOIN #django
')
while 1:
readbuffer=readbuffer+s.recv(1024)
temp=string.split(readbuffer, "
")
readbuffer=temp.pop( )
for line in temp:
line=string.rstrip(line)
line=string.split(line)
print line
orbit.event(["django, 0, /chat"], str(line))
from pyorbited.simple import Client
from django.shortcuts import render_to_response
from django.conf import settings
from django.http import HttpResponse
users = []
orbit = Client()
def chat_page(request):
return render_to_response('chat.html', {})
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Chat</title>
<script src="/_/orbited.js"></script>
<script type="text/javascript" src="/site_media/ajaxroutine.js"></script>
<link rel="stylesheet" href="/site_media/chat.css">
<script src="/site_media/chat.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="Connect" name="nickname" onClick="connect();">
<div id="box"></div>
<iframe id="events"></iframe>
</body>
</html>
function connect()
{
Orbited.connect(chat_event, "django", "/chat", "0");
}
chat_event = function(data) {
var chat_box = document.getElementById('box');
var div = window.parent.document.createElement('div');
div.className = "event";
div.innerHTML = data;
chat_box.appendChild(div);
chat_box.scrollTop = chat_box.scrollHeight;
}
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^site_media/(.*)$', 'django.views.static.serve', {'document_root': '/ścieżka'}),
(r'^/?$', 'chat.views.chat_page'),
)

RkBlog
Comment article