0x00 前言
其实我也不太清楚这种操作到底该叫什么
不过跟 Monkey patch
似乎是一个用途,就是在运行时修改代码
于是我就先叫他 Dynamic patch
啦
0x01 起因
在使用 Flask-SocketIO
的时候,发现其并没有完全实现所有的 socket.io
中的 transport
协议
于是想手动支持一下 JSONP Polling
看着 eventlet
提供的 monkey_patch()
,发现我是不是也可以动态
0x02 实战
当同时使用
跟着代码摸了几个小时,再看了看官方
engineio.server.Server::_ok()
engineio.payload.Payload::decode()
engineio.payload.Payload::encode()
engineio.server.Server::handle_connect()
engineio.server.Server::_handle_connect()
这五个函数替换掉了,总体思路比较简单,