一、需求
作為與語音識別服務(wù)端溝通的橋梁,兼顧運行在各大常見操作系統(tǒng)。
1.支持http、websocket等通信協(xié)議
2.提供非阻塞調(diào)用接口,需要事件驅(qū)動模型
3.支持跨平臺編譯(Android、iOS、windows、linux、macOS)
4.輕量
二、技術(shù)方案
1、自己造輪子
優(yōu)點:代碼可控、可保證輕量
缺點:http和websocket自己實現(xiàn)難免挖坑
2、使用開源
優(yōu)點:選用成熟開源代碼,穩(wěn)定性有保證,減少開發(fā)工作量
缺點:開源代碼并不是基于自己項目需求,可能造成代碼臃腫,萬一有坑填坑過程艱難
三、確定方案
基于需求,最終選用基于開源項目cesanta/mongoose進(jìn)行開發(fā)。
mongoose特性:
基于純c語言開發(fā)
跨平臺支持:Linux/UNIX, MacOS, QNX, eCos, Windows, Android, iPhone, FreeRTOS (TI CC3200, ESP8266), etc
內(nèi)建協(xié)議:TCP、UDP、SSL/TLS、HTTP client,、HTTP server、WebSocket client、WebSocket server、MQTT client、MQTT broker、CoAP client、CoAP server
基于簡單事件接口的單線程、異步、非阻塞內(nèi)核