当前位置: 首页 > news >正文

使用libwebsocket写一个server

lws-minimal-ws-server这些例程在buildroot里面,更新的话只能整体编译,十分麻烦和耗时,在sdk外面建立项目,单独开发,会更合适。

创建程序文件夹和文件

mkdir ./ws_cam
cd ./ws_cam
cp ../luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libwebsockets-4.3.2/minimal-examples/ws-server/minimal-ws-server/*.c ./
thouch ./CMakeLists.txt

编辑源代码

用vscode打开ws_cam目录,修改里面的源代码
CMakeLists.txt

project(ws_cam C)
cmake_minimum_required(VERSION 2.8.12)

include_directories(../luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include)
link_directories(../luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib)

set(CMAKE_C_COMPILER ../luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-gcc)
set(CMAKE_CXX_COMPILER ../luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-g++)
set(EXC ws_cam)
set(SRCS minimal-ws-server.c )


add_executable(${EXC} ${SRCS})
target_link_libraries(${EXC} websockets ssl crypto blkid z)

minimal-ws-server.c

static const struct lws_http_mount mount = {
	/* .mount_next */		NULL,		/* linked-list "next" */
	/* .mountpoint */		"/",		/* mountpoint URL */
	/* .origin */			"/oem/usr/www",  /* serve from dir */
	/* .def */			"index.html",	/* default filename */
	/* .protocol */			NULL,
	/* .cgienv */			NULL,
	/* .extra_mimetypes */		NULL,
	/* .interpret */		NULL,
	/* .cgi_timeout */		0,
	/* .cache_max_age */		0,
	/* .auth_mask */		0,
	/* .cache_reusable */		0,
	/* .cache_revalidate */		0,
	/* .cache_intermediaries */	0,
	/* .origin_protocol */		LWSMPRO_FILE,	/* files in a dir */
	/* .mountpoint_len */		1,		/* char count */
	/* .basic_auth_login_file */	NULL,
};

这里把前端的根目录文件夹指定为上次vue3前端的根目录/oem/usr/www

编译测试

cmake ./
make
scp ./ws_cam root@192.168.9.163:/oem/usr/bin

在rv1106摄像头上运行ws_cam

/oem/usr/bin/ws_cam

用浏览器打开网址
192.168.9.163:7681
可见vue3欢迎页面

相关文章:

  • 【AI】利用Azure AI的元数据过滤器提升 RAG 性能并增强向量搜索案例
  • 【备考记录】三种校验码
  • pop是什么的缩写?为什么Python用它表示删除元素?
  • 【统计学相关笔记】2. 多元正态的Cochran定理
  • iptables练习笔记20250315
  • 盖革管死区时间导致脉冲丢失分析
  • 3.9/Q2,Charls最新文章解读!
  • 苹果电脑杀毒软件CleanMyMac
  • Android 手机启动过程
  • [C++Qt] 槽函数收不到信号问题(信号的注册)
  • 当大模型训练遇上“双向飙车”:DeepSeek开源周 DualPipe解析指南
  • 数字化转型 - 数据驱动
  • 【干货】Docker 在自动化测试和性能测试中的应用
  • 3.15刷题
  • 剑指 Offer II 083. 没有重复元素集合的全排列
  • 支持本地部署人力资源系统:6款工具评测精选
  • golang time包和日期函数
  • ​​​​​​​大语言模型安全风险分析及相关解决方案
  • 蓝桥杯嵌入式赛道复习笔记1(led点亮)
  • Python实现限流算法
  • 北京韩美林艺术馆党支部书记郭莹病逝,终年40岁
  • 朱雀二号改进型遥二运载火箭发射成功
  • 外企聊营商|上海仲裁:化解跨国企业纠纷的“上海路径”
  • 李成钢:近期个别经济体实施所谓“对等关税”,严重违反世贸组织规则
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 一船明月过沧州:为何这座城敢称“文武双全”?