$ mkdir testwss
$ cd testwss
$ yarn init
$ yarn add express socket.io socket.io-client
package.json
{
"name": "testwss",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"express": "^4.16.4",
"socket.io": "^2.2.0",
"socket.io-client": "^2.2.0"
}
}
wss.js
var fs = require('fs')
var express = require('express')
var app = express()
var server = require('https').createServer({
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./cert.pem'),
passphrase: 'password'
}, app)
var io = require('socket.io')(server)
app.use(express.static(__dirname + '/public'))
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html')
})
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' })
socket.on('my other event', function (data) {
console.log(data);
})
})
server.listen(3000, function () {
console.log('started at https:/localhost:3000')
})
index.html
<html>
<head>
<title>Socket.IO WSS</title>
</head>
<body>
<h1>Socket.io wss</h1>
<script src="socket.io.js"></script>
<script>
var socket = io.connect('wss://localhost:3000');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</body>
</html>
создать папку
public
в нее скопировать:
- node_modules/socket.io-client/dist/socket.io.js
- node_modules/socket.io-client/dist/socket.io.js.map
установить openssl
https://www.openssl.org/
сгенерировать ключи:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem
положить их в корень папки testwss
запускать:
$ node wss.js
в браузере открывать
https://localhost:3000
в консоле в браузере смотреть что все ок %)