[Twisted-Python] Chat by html application
Tibi Dondera
incoming at pronet-romania.com
Sun May 29 12:59:19 MDT 2005
Thank you all for your help, I'll check out chatola and folow your other
advices, and also switch this discussion to twisted-web.
_________________
Tibi DONDERA
-----Original Message-----
From: twisted-python-bounces at twistedmatrix.com
[mailto:twisted-python-bounces at twistedmatrix.com] On Behalf Of
Harald.Nyman at astrazeneca.com
Sent: Friday, 27 May 2005 18:45
To: twisted-python at twistedmatrix.com; twisted-web at twistedmatrix.com
Subject: RE: [Twisted-Python] Chat by html application
Hi Tibi,
Nevow is probably the best. But there are other ways too. I've been
doing this for several years with a Tomcat servlet, and then there was
no Nevow. After converting to Pythonism, I switched to a Twisted server.
Haven't learned Nevow yet, despite good intentions..., but I think this
may be similar. It's essentially doing all of "What I want to do:"
below, only I'm not using it mainly for chat, but for distributing HTML
or Javascript, for viewing things together during a phone meeting.
- the browser's background HTTPRequest sits in a threaded applet
- someone switches on "collaboration" in his browser - the others see
his name being added to the "virtual meeting"
- one user drags a pointer (image) in his browser -> the pointer moves
in the other browsers
See also some A's to your Q's, below.
Harald
On 5/26/05, Tibi Dondera <incoming at pronet-romania.com> wrote:
> Hello all,
>
> I'm trying to develop a chat application through a browser, using
> twisted (if possible) What I want to do:
> - a user logs in the website
> - he goes to the "chat page"
> - he has the "classic" chat interface (sent messages, list of online
> users, "send a message" field). All of these are simple "divs"
> - when he sends a message, a post with the message is submitted to
the
> server, and registered in a temporary database table (or in memory, is
> there some "temporary" memory that I can use in twisted for this
purpose
> ?)
> - for refreshing the chat area, there is an open HTTPRequest in the
> background. Twisted will do the following:
> - accept the HTTPrequest connection
> - keep it alive (i.e. do not send the answer, but maybe send some
> empty chars to force the browser to keep the connection open)
> - when a new message (from the other users) is available, send it
> to the user and close the connection.
> - in the user's browser, when the connection is closed (either with a
> message, or after a certain timeout, that cannot be avoided anyway), a
> new one will be opened, until the user quits the chat.
>
> Questions:
> - Is this a plausible solution ?
Yes, IMHO.
> - Has this already been implemented (or at least partly) ?
> - Can this actually be done with twisted ?
Yes.
> - Can I develop this on Windows ? (production will be on linux, but
> still, I prefer developing local, and currently on windows)
Hmm.. I develop "on Windows", but with a VMWare Linux server on the same
laptop. Works great, but costs a bit. Should work with the server on
Windows, too(?)
> - Can you give me any pointers to some existing code, or where to
> start ? (maybe jabber for twisted ?)
Here's a few fragments from my server code -
class Servlet(resource.Resource):
...
# Send queued output to browser's background listener
def render_GET(self, request):
self.request = request
session = request.getSession()
...
anything = 0
while not session.outqueue.empty():
x = session.outqueue.get()
request.transport.write(x)
anything = 1
if anything:
request.finish()
return server.NOT_DONE_YET
def render_POST(self, request):
session = request.getSession()
# Browser sends a dictionary as text
msgDict = eval(request.args['message'][0])
request.finish()
message = msgDict['message']
mSplit = message.split()
... # Do work here
return server.NOT_DONE_YET
> - How will a twisted http server coexist with my existing apache
> server on the 80 port ?
Not well, I guess. I use a different port for the Twisted server.
> - Must I subscribe to the twisted-http mailing list instead and ask
> this question there ?
Twisted-web would be better, yes. I'm posting this one there too, with
all due apologies...
>
> Thanks for any help.
>
> Tibi Dondera
_______________________________________________
Twisted-Python mailing list
Twisted-Python at twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________
Twisted-Python mailing list
Twisted-Python at twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
More information about the Twisted-Python
mailing list