简明扼要的说下, 就两个线程,一个 负责收数据,一个负责发心跳包。
步骤如下,
进程1,调用 发包函数,发送连接请求,然后再发送 获取弹幕类型请求,就一直循环接收数据。
进程2,循环函数,每隔45秒向服务器发一次心跳包。
因为斗鱼自己定义了 包头,,所以来在发包之前,先发送包数据。12个字节,
消息头部:消息长度 4字节 +消息类型4字节+加密字段2字节(默认为0)+保留字段2字节(默认为0)
然后就要把要发的内容 加上 “ ”,utf-8 编码后就能发送了
完整的 消息是:包头 + 内容 +” ”;
上Python代码:
main.py
import socket import time import threading import multiprocessing from barrage_func import * # 导入自定义方法 SERVER_DOMAIN = "openbarrage.douyutv.com" # 弹幕服务器 域名 SERVER_PORT = 8601; # 弹幕服务器 端口 ROOM_ID = 288016; #房间ID global FIX_TAIL #拼接处理后被丢弃的数据,防止弹幕丢失 FIX_TAIL = "" global gl_client #全局socket gl_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def init_socket(): global gl_client host_ip = socket.gethostbyname(SERVER_DOMAIN) gl_client.connect((host_ip, SERVER_PORT)) def sendDate(client,data): data = data + '