Django, Comet and IRC client
Check out the new site at https://rkblog.dev.
14 July 2008
Comments
On oreilly.com we can find a simple IRC client written in python. It can receive messages from a IRC channel keeping an open connection. With comet and orbited server we can easily move this script functionality to a web application just by emitting events for every received message.Here is a modified script from oreilly - 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
Check out the new site at https://rkblog.dev.
Comment article