本地局域网内采用 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.pem 和 192.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() { });