前提条件:需先编译好boost库,参考我的另外一篇文章
嵌入式开发(五):海思Hi3559AV100交叉编译boost
1.下载websocketpp
下载路径https://github.com/zaphoyd/websocketpp/
得到websocketpp-master.zip
解压得到websocketpp-master目录
2. 编译server
进入websocketpp-master/examples/telemetry_server
这里使用/telemetry_server的原因是这个sample包含了一个index.html文件
在当前目录下编写Makefile文件(如下),注意下面路径设置了
CC :=aarch64-himix100-linux-g++
LDLIBS :=-lboost_system -lpthread
CFLAGS :=-std=c++11
INC_FLAGS :=-I../../
INC_FLAGS +=-I/mnt/hgfs/ubuntu_share/boost_1_70_0
LDFLAGS :=-L/mnt/hgfs/ubuntu_share/boost_1_70_0/stage/lib
TARGET:=telemetry_server
$(TARGET):telemetry_server.cpp
$(CC) telemetry_server.cpp $(LDLIBS) $(CFLAGS) $(INC_FLAGS) $(LDFLAGS) -o $@
- 上面路径INC_FLAGS指定了两个头文件目录:
(1)websocketpp头文件所在目录,websocketpp-master目录下有一个websocketpp目录,此为头文件所在位置
(2)boost头文件所在目录,boost_1_70_0目录下有一个boost目录,此为boost头文件所在位置
- LDFLAGS指定了boost lib文件所在位置
在当前目录下运行make, 即可得到telemetry_server可执行文件
3. 运行telemetry_server
使用MobaXterm等工具等到到hi3559Av100开发板
使用tftp将telemetry_server与index.html文件传输到hi3559Av100开发板上,例如放到/root/web目录下,
使用chmod 777 改变文件权限:
chmod 777 telemetry_server
运行telemetry_server
./telemetry_server ./ 9002
第1个参数指定index.html文件所在位置, 9002为http及websocket服务端的端口号
运行起来后可以看到打印:
在电脑上打开浏览器,输入网址:http://10.1.20.24:9002/
其中10.1.20.24为Hi3559av100开发板的IP地址,
电脑端浏览器页面右侧则出现了两行控件:
这里显示的就是开发板中inde.html里所写的代码的呈现效果,第一行的localhost为html文件里的静态值,我们在输入框里改为:ws://10.1.20.24:9002, 再点击connect按钮
终端中打印如下,表示server端已接收到websocket的客户端链接
浏览器端页面打印如下:
这些打印是websocket服务端主动推送到浏览器Client端的打印输出。
我们将在下篇文章中讲解telemetry_server的代码原理。