Python 中基于 Web 的聊天服务器的教程 [已关闭]

2023-11-23

我正在做一个网络课程的家庭作业项目,我们必须用 C/C++ 或 Python 构建一个简单的基于 Web 的聊天服务器。我选择 Python 是因为我认为它是一种更容易实现项目的语言。我们可以使用在网络上找到的任何材料,因为它很可能不具备项目所需的所有功能。事实上,教授实际上鼓励我们使用网络上的材料,包括教程。他不是在测试我们编码的能力,而是测试我们实现网络代码的能力,以及我们是否完全理解所涉及的流程。

该项目必须处理多个客户端,并且必须能够支持多个浏览器,chrome、firefox 等。用户需要能够在浏览器中输入 IP 地址和端口进行连接。我只是找不到任何可以使用的材料。我在 C 语言中找到了一些,但在 Python 中却一无所获。

有谁知道那里有完整的教程吗?有很多基于客户端/服务器命令的聊天,但没有基于浏览器的聊天。


你可以看看使用TornadIO。它是一个Python实现Socket.io, for Tornado,Tornado 是一个事件驱动的 python Web 服务器。

https://github.com/MrJoes/tornadio2

http://www.tornadoweb.org/

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中基于 Web 的聊天服务器的教程 [已关闭] 的相关文章

随机推荐

  • 在树莓派 4 上安装 Rust 后无法运行货物

    我尝试使用推荐的安装脚本在 Raspberrypi 4 上安装 rust pi raspberrypi tmp curl https sh rustup rs sSf sh 但重启后 cargo找不到 pi raspberrypi carg
  • 如何在 post-receive hooks 中获取推送者的信息?

    Git 中的作者 提交者和推送者可以是不同的人 但 git 并没有在日志中存储推送者的信息 那么 我如何得到它 你不知道 The 上游回购不对谁提供提交做出任何假设 可以通过电子邮件 USB 密钥上复制的差异补丁以及其他方式各种传输协议 其
  • 如何使用加速度计计算步数?

    我必须开发与此相同的功能计步器应用程序 我观察到了这一点计步器应用程序非常详细 这不是一个完美的计步器应用程序 例如 如果您停留 坐在一个地方并握手 它还会检测步数和距离 忽略这种理想和重力行为 因为在这个应用程序的说明中已经提到你应该绑住
  • Angular2 与 Haml

    是否可以在 Angular 2 中使用 HAML 作为模板引擎 在 Angular 2 版本2 3 1 你可以使用 scss sass 代替 css 这是给定的选项angular cli with style 对于模板 cli 只允许通过设
  • Spring在没有@Autowired注解的构造函数中注入依赖项

    我正在尝试这个官方 Spring 的示例教程并且对这段代码有依赖 https github com spring guides gs async method tree master complete 如果你看一下代码AppRunner j
  • Rails:查找 HABTM 关系中没有连接的行

    我有两个模型 Users and Leads与HABTM关系相连 class Lead lt ActiveRecord Base has and belongs to many users end class User lt ActiveR
  • 在 Spring Security 中禁用浏览器身份验证对话框

    我正在使用 spring security 4 出于某种原因 在我使用登录页面完成身份验证后 我收到浏览器身份验证对话框 这迫使我再次进行身份验证 这是我的安全配置 http antMatcher test httpBasic and au
  • Google App Engine 自定义域未激活 Google 管理的 SSL

    我在 Google App Engine 上成功为我的应用程序配置了自定义域 我可以通过以下方式访问我的应用程序 http www myapp com 但是 在我的自定义域仪表板上 Google 管理的 SSL 需要很长时间才能激活 我有一
  • 一点到这条曲线的最短距离

    我需要找到多个点到以下形式的曲线的距离 f x a k bx 我的第一个选择是使用它的导数 使用导数的倒数形式的线 给出它的坐标Point并将其与原始曲线相交 最后 我们用简单的几何计算点之间的距离 这就是我通常遵循的数学过程 我需要节省时
  • 在证书上,主题AltName 中的电子邮件地址应为什么类型

    一点背景 我正在建造一个证书颁发机构使用 M2Crypto 和 Django 所以请在投票之前三思而后行 将其视为题外话 我的方法是 最终用户通过电子邮件地址进行识别 并且他们的自签名信任锚显然是由他们自己发布的 但我应该如何存储他们的 身
  • XML 中的转义双引号字符

    xml中的双引号是否有转义字符 我想写一个标签 例如
  • 最短超串搜索的更有效算法

    我下面的问题是 NP 完全的 但是 我试图找到至少稍微快一点的字符串搜索函数或模块 与现在相比 它可能有助于减少一些计算时间 任何建议 将不胜感激 连接的 尽可能长的 超字符串是 AGGAGTCCGCGTGAGGGAGGTGTAGTGTAG
  • 如何在 python 中构造列表项的集合?

    我有一个listpython 中的文件名 我想构造一个set从所有文件名中 filelist for filename in filelist set filename 这似乎不起作用 怎么能做到这一点呢 如果您有一个可哈希对象的列表 文件
  • 为什么分支名称不能在开头包含“#”字符?

    这个 git checkout b 1 my awesome feature 产生错误 error switch b requires a value 用反斜杠转义或用引号括起来都可以 git checkout b 1 my awesome
  • 在 Symfony2 中验证密码

    我正在尝试在 Symfony2 中整合更改密码功能 我有一个 当前密码 字段 一个 新密码 字段和一个 确认新密码 字段 我当前关注的部分是验证 当前密码 字段 顺便说一句 我现在意识到像这样的事情FOSUserBundle存在 可以为我处
  • 如何在 Laravel 5+ 中获取客户端 IP 地址

    我正在尝试在 Laravel 中获取客户端的 IP 地址 在 PHP 中使用以下命令可以轻松获取客户端的 IP SERVER REMOTE ADDR 它在核心 PHP 中工作正常 但是当我在 Laravel 中使用相同的东西时 它返回服务器
  • 在浏览器下载中保留 UTF-8 BOM

    我有一个 JAX RS REST Service 它生成 CSV 文件并将其流回浏览器 一切都设置为 UTF 8 所以我通过浏览器下载的文件也是一个有效的 UTF 8 文件 没有 BOM 它在 Notepad Sublime 等中向我显示有
  • java.lang.IllegalArgumentException:当前应该 >= start 且 <= end

    我正在尝试在 android 中的按钮上实现日期选择器 但一旦我点击按钮 错误就会弹出 但时间选择器运行良好 这是代码 mPickDate setOnClickListener new View OnClickListener Assign
  • 从 ggplot2 图例中删除“点”元素

    示例代码 EmigProb lt c rep seq 0 1 0 8 length 5 4 rep seq 0 1 0 8 length 5 4 RemainEmigProb lt c rep 0 2 5 rep 0 4 5 rep 0 6
  • Python 中基于 Web 的聊天服务器的教程 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在做一个网络课程的家庭作业项目 我们必须用 C C 或 Python 构建一个简单的基于 Web 的聊天服务器 我选择 Python 是因为我认