跳至正文

Express + Socket.io

本地局域网内采用 Express(v4.17.1) + Socket.io(v3.0.4) 开发项目(远程控制)时,最简单的方式就是采用 http 进行连接。

var express = require('express');
var app = express();

var http = require('http').createServer(app);

var io = require('socket.io')(https);

http.listen(3636);

app.use(express.static(__dirname + '/public'));

如果希望采用 https 进行连接的话,步骤如下:

1.创建本地受信任的 SSL 证书

参考文章,主要是使用 mkcert 来创建证书:

安装

brew install mkcert

使用

mkcert -install

mkcert 192.168.1.111

会生成 192.168.1.111.pem192.168.1.111-key.pem 两个文件,然后拷贝至项目所在文件夹。

2.在 Express 中使用

var express = require('express');
var app = express();

var fs = require('fs');
var options = {
	key: fs.readFileSync('./192.168.1.111-key.pem'),
	cert: fs.readFileSync('./192.168.1.111.pem')
};
var https = require('https').createServer(options, app);

var io = require('socket.io')(https);

https.listen(3737);

app.use(express.static(__dirname + '/public'));

但是局域网内不同 IP 下访问页面的时候,会提示证书无效。

无论是采用 http 或者 https ,在客户端代码中创建 socket 的代码相同。

socket = io();

/*
 * http
 * socket = io('http://192.168.1.111:3636');
 * https
 * socket = io('https://192.168.1.111:3737');
 */

socket.on('connect', function() {

});

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注