m0_57965808 2021-12-18 17:03 采纳率: 91.2%
浏览 20
已结题

websocket的一段代码不明白什么意思和其作用

问题遇到的现象和发生背景

在CSDN看到一篇文章,但是因为本人才疏学浅导致对某些内容感到难以理解。向作者求问后作者也尚未得到答复。故来此请教。文章地址为:https://blog.csdn.net/as604049322/article/details/113101504
我不明白的代码部分为:Python的websocket同步客户端部分。问题有三个:
1 怎么判断服务端是否发送消息或连接已经建立呢?
2 12行至14行的代码该怎么理解
3 32行至39行的代码该怎么理解

问题相关代码,请勿粘贴截图
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 创建时间:2021/1/24 17:06
__author__ = 'xiaoxiaoming'

import time

import websocket
import _thread


# 在接收到服务器发送消息时调用
def on_message(ws, message):
    print('Received: ' + message)


# 在和服务器建立完成连接时调用
def on_open(ws):
    # 线程运行函数
    def process():
        while True:
            s = input("要发送的内容(quit表示退出):")
            if s == "quit":
                break
            ws.send(s)
            # 休息 0.2 秒先接收服务器回复的消息
            time.sleep(0.2)
        # 关闭 Websocket 的连接
        ws.close()
        print("Websocket closed")

    # 在另一个线程运行 gao() 函数
    _thread.start_new_thread(process, ())


if __name__ == "__main__":
    ws = websocket.WebSocketApp("ws://127.0.0.1:8000/",
                                on_message=on_message,
                                on_open=on_open)

    ws.run_forever()


  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-19 21:06
    关注

    1 怎么判断服务端是否发送消息或连接已经建立呢?
    从目前的客户端代码, 无法判断服务端是否发送消息, 只能是建立连接后,收到服务器端的消息,才知道服务器端给了消息。
    至于连接建立, 如果建立超时失败
    ws = websocket.WebSocketApp 那行,会返回一个无法建立连接消息

    2 12行至14行的代码该怎么理解
    定义收到服务器消息的动作, 你可以修改为
    def on_message(ws, message):
    print('收到服务器消息啦: ' + message)

    这个函数调用在 websocket.WebSocketApp 那里做了指向

    3 32行至39行的代码该怎么理解

    33行是 on_open 的函数内容

    36 - 39 就是 当运行这个文件时,不是直接import 这个文件, 则
    执行 两行代码
    1是建立一个 websocket.WebSocketApp
    2是让这个对象一直运行 run_forever()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题