Mongoose搭建本地Https服务器

业务需求,需要本地起个服务器和浏览器进行通信,http服务会有跨域的问题,好心塞,然后又花了差不多一周时间去整这个https,大佬给我推荐了Mongoose,花了点时间去弄这个东东。

  1. Mongoose下载地址: Mongoose
  2. Demo:Simplest_web_server_ssl

Demo里面很贴心的准备了程序用到的证书和密钥,以及浏览器需要安装的证书,如果需要用自己的自签证书,用OpenSSL制作过程打算下一个帖子来写。

Demo是用来展示程序目录下的文件系统,如果需要实现自己的功能,重写消息处理函数即可。

static void ev_handler(struct mg_connection *nc, int ev, void *p) {
	if (ev == MG_EV_HTTP_REQUEST) {
		mg_serve_http(nc, (struct http_message *) p, s_http_server_opts);
	}
}

事件类型看了下他的宏定义,有好多,你可以根据业务场景的需要选择响应不同事件,我这里就直接用MG_EV_HTTP_REQUEST。

服务端发送应答消息最后用到的函数还是mg_send(),所以只需要这一个就够了,需要发送哪些内容就得了解一下http报文结构,响应报文主要有3部分:

  1. 起始行:“HTTP/1.1 200 OK\r\n”
  2. 首部:“Content-Type:text/html\r\nAccess-Control-Allow-Origin: *\r\nContent-Length:17\r\n\r\n”
  3. 主体:“This is a Test!!!”

注意首部和主体部分有一个空行,所以首部结尾是"\r\n\r\n",调用mg_send()方法,但我分了两次调用,将起始行和首部封装在一起了,除了Content-Length会因为返回内容的长度而进行修改,所以我基本上就写死了,直接上代码吧:(PS:首部内容可以找前端了解一下,让他给一套标准,不过我感觉上面4个基本就够了,需要其他得可以根据业务添加)

	std::string sHeader, sContent;
	//...省略部分代码
	mg_send(nc, sHeader.c_str(), sHeader.length());//头部信息
	mg_send(nc, sContent.c_str(), sContent.length());//返回数据内容

刚开始写帖子,写的有点low,有什么好的建议可以私信我或者直接在下方评论。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤使用 Express 和 Mongoose 搭建服务器: 1. 首先,确保你已经安装了 Node.js 和 npm。 2. 创建一个新的项目目录,并进入该目录。 3. 在项目目录中初始化 npm,执行以下命令: ``` npm init -y ``` 4. 安装 Express 和 Mongoose,执行以下命令: ``` npm install express mongoose ``` 5. 创建一个新的文件 `server.js`,并在其中导入所需的模块: ```javascript const express = require('express'); const mongoose = require('mongoose'); ``` 6. 初始化 Express 应用程序,并连接到 MongoDB 数据库: ```javascript const app = express(); mongoose.connect('mongodb://localhost/your-database-name', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => { console.log("Connected to MongoDB"); }) .catch((error) => { console.error("Connection to MongoDB failed:", error); }); ``` 注意替换 `'mongodb://localhost/your-database-name'` 为你的 MongoDB 数据库的连接字符串。 7. 添加一些中间件和路由处理程序,以便配置你的服务器。这里是一个简单的示例: ```javascript app.use(express.json()); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 8. 启动服务器,执行以下命令: ``` node server.js ``` 如果一切顺利,你将看到以下输出: ``` Connected to MongoDB Server is running on port 3000 ``` 现在,你的 Express 服务器已经使用 Mongoose 连接到 MongoDB 数据库,并监听在本地的端口3000上。你可以根据需要添加更多的路由和中间件来完善你的服务器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值