一个开箱即用 WebSocket 服务

下载部署

首先下载 v-socket,在终端里将服务运行起来,就拥有一个非常轻量化的WebSocket服务

从Github下载https://github.com/vaas1993/v-socket

可以将项目拉下来自己编译,也可以直接下载releases

下载或者编译后我们得到一个 v-socket.jar 文件,在终端运行以下命令启动服务:

java -jar v-socket.jar

终端输出以下内容说明服务运行成功:

2023-02-23 14:47:55.0812 INFO  - 消息队列处理器启动成功
2023-02-23 14:47:55.0883 INFO  - WebSocket服务启动成功,端口号:20100
2023-02-23 14:47:55.0884 INFO  - HTTP服务启动成功,端口号:20101

服务分为 HTTP 和 WebSocket 两部分,前者用于服务端提交消息,后者与客户端保持一个长连接用于消息推送,而服务本身就是将服务端提交的消息推送到指定的客户端上。

创建应用ID

服务运行起来后,我们需要为业务平台创建一个应用ID,只需要在终端输入以下命令即可:

java -cp v-socket.jar Create

按下回车键后终端会提示输入应用名称,我们正常输入后按下回车键即可得到

请输入应用名称:
测试
正在创建...
已成功创建应用 e0d9a699c830095c5b8c548bb4f73a46
你可以使用以下SQL在 certificate 表里查找对应的记录:
SELECT * FROM certificate WHERE appid = 'e0d9a699c830095c5b8c548bb4f73a46';

默认配置下会在执行目录创建一个 database.db 的文件,这是SQLite 数据库的存储文件,我们可以用数据库软件(比如Navicat)连接它,执行终端返回的那条SQL就可以获得应用ID和RSA密钥

服务端推送消息

我们可以发起一个POST application/json 请求到 127.0.0.1:20101 上,提交一段以下内容:

[
  {"id": "10000","message": "push a message"},
  {"id": "10001","message": "push a message again"}
]

 这样我们就分别为 ID 为10000和10001的用户推送了一条消息了。

客户端登录

 客户端登录分为两个步骤,首先需要先由服务端使用应用ID和RSA公钥计算出登录凭证,这一步我们可以参考项目文档

客户端登录文档https://github.com/vaas1993/v-socket/blob/main/documents/%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%99%BB%E5%BD%95.md

在C语言中,实现WebSocket通信可以借助一些现成的库或代码。一个例子是websocketfiles,它是一个在GitHub上的项目,提供了两个经过精心设计和开箱即用WebSocket类,可以使你正在进行的C语言项目轻松支持WebSocket。你可以在GitHub上找到该项目的代码,了解每个部分的实现细节。数据帧的收发通过WebsocketEndpoint::parser_packet,WebsocketPacket::recv_dataframe和pack_dataframe完成。你可以参考该项目的代码,以更好地理解WebSocket的实现方式,即使你不使用别人的代码,相信你也能够自己编写WebSocket代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++实现WebSocket功能及WebSocket协议详解(附代码websocketfiles)](https://blog.csdn.net/qq_39540028/article/details/104493049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++实现WebSocket简单服务器](https://blog.csdn.net/qq_44722098/article/details/127104937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘尾田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值