» Python:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.1 初始版本

初始版本

创建项目目录:lr_webchat_py

创建虚拟环境

使用虚拟环境来隔离项目依赖项是一种最佳实践。你可以使用 Python 3 内置的 venv 模块创建虚拟环境。

python3 -m venv lrWebChatEnv

警告
如果你使用 git 或其他版本管理系统,记得要忽略虚拟目录。 比如, .gitignore

+
+lrWebChatEnv/

激活虚拟环境

此步骤各平台操作不同。

在 Windows 平台:

lrWebChatEnv\Scripts\activate

在 macOS 和 Linux 平台:

source lrWebChatEnv/bin/activate

管理依赖

在项目根目录创建名为 requirements.txt 的文件。该文件用于列出项目的依赖项及其具体版本。你可以使用如下命令自动生成文件:

pip3 freeze > requirements.txt

如果你的虚拟环境设置正确的话,你将会得到一个空文件 requirements.txt

安装

安装 python-socketio

pip3 install python-socketio

你还需要安装一个 ASGI server,比如Uvicorn 或者 Hypercorn

pip3 install uvicorn

安装后,更新 requirements.txt:

pip3 freeze > requirements.txt

此命令更新 requirements.txt 文件。其内容大致如下所示:

bidict==0.23.1
click==8.1.7
h11==0.14.0
python-engineio==4.9.0
python-socketio==5.11.2
simple-websocket==1.0.0
uvicorn==0.29.0
wsproto==1.2.0

创建 main.py:

import socketio

sio = socketio.AsyncServer(async_mode='asgi', cors_allowed_origins='*')
app = socketio.ASGIApp(sio)


@sio.event
async def connect(sid, environ):
    print('A user connected:', sid)

如下运行程序:

uvicorn main:app --port 4000

将得到类似如下信息:

INFO:     Started server process [93232]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:4000 (Press CTRL+C to quit)

你的 chat 服务器已经在 4000 端口跑起来了。