Показать сообщение отдельно
  #5 (permalink)  
Старый 20.02.2019, 20:09
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

$ 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

в консоле в браузере смотреть что все ок %)
Ответить с цитированием