上次我们利用一个
websocket client
的实现对ws协议
进行了详细的解析(websocket client & ws协议解析),作为一个深度强迫症犯者,那么websocket server
就必不可少了。
为了保证示例的简洁性,我们仅仅建立了支持单个客户端的 websocket 服务端的模型。而一般的网络编程模型,都是主进程一个事件监听连接,接收连接之后把连接对象抛给IO线程池(一般线程数量等于CPU核数),这个IO线程池每个人都有自己的epoll,来监听连接对象的可读事件,IO线程读取完数据,进行TCP粘包、半包处理,然后封装成task,最后丢给一个工作线程池来处理task,最后处理完task由一个专门的发送线程进行统一发送数据。
环境说明:
- 完整代码: websocket_server.c
- RFC6455协议
- gcc version 4.4.7 x86_64-redhat-linux
- websocket客户端 采用 Javascript 的
new WebSocket("ws://127.0.0.1:2346/")
系列方法