该项目必须处理多个客户端,并且必须能够支持多个浏览器,例如Chrome,Firefox等。用户需要能够在浏览器中输入IP地址和端口进行连接。我只是找不到任何可以使用的材料。我已经在C中找到了一些内容,但在Python中却没有找到。
请问有没有完整的教程可用?有很多客户端/服务器命令行聊天的教程,但没有基于浏览器的聊天系统。
https://github.com/MrJoes/tornadio2
Socket.io是一种跨浏览器的解决方案,用于从Web客户端到服务器的套接字/类似套接字的连接。这基本上为您提供了所有必要的工具来创建聊天服务器,因为它支持发布-订阅订阅和消息。使用socket.io的好处在于它尝试多种传输方式,以确保新旧浏览器都可以通信:Websocket、Flashsocket、xhr轮询、jsonp、htmlfile。它们都会被尝试并以对客户端看起来相同的方式使用。
Tornadio2是与较新的Socket.io 0.7+兼容的新版本。该版本添加了许多功能,但破坏了与0.6的兼容性。然而,原始的TornadIO包含一个聊天室示例,您可以轻松查看和转换为新版本,以帮助您入门:
https://github.com/MrJoes/tornadio/tree/master/examples/chatroom
据我所理解,这个作业的目的是让人们亲身体验 网络
编程。因此可以看一下 www.twistedmatrix.com,里面有一些使用 twisted 的示例:
使用 Python 和 Twisted 实现的聊天室网站,
http://lists.canonical.org/pipermail/kragen-hacks/2005-April/000409.html,
http://code.google.com/p/twisted-chat-example/。
这个示例使用了普通的 socket 编程: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。
tornadoio
将添加的消息存储到数据库中?我是否需要结合线程或多进程模块,并拥有多个进程 - 一个用于聊天,一个用于数据库查询?还是您看到了更平稳的方法来完成这个任务? - Friendly Kingqueue.get
上,当它接收到消息时,将其添加到数据库中。这样,你就可以从另一个线程向队列中放入消息而不会阻塞任何东西。 - jdi