web сокет не хочет работать по ssl
есть java script
вот его код var scribe = require('scribe-js')(), app = require('express')(), server = require('http').Server(app), io = require('socket.io')(server), requestify = require('requestify'); var schedule = require('node-schedule'); server.listen(8080); add_online(); setInterval(add_online, 60000); activebots(); io.sockets.on('connection', function (socket) { updateOnline(); getDrops(); socket.on('newDrop', function(id){ requestify.post('http://localhost/api/getGame', { id: id}) .then(function (response) { data = JSON.parse(response.body); io.sockets.emit('nd', data.text); }, function (err) { console.log(err); }); }); socket.on('disconnect', function () { updateOnline(); }); }); function updateOnline(){ io.sockets.emit('updateonline', Number(Object.keys(io.sockets.adapter.rooms).lengt h) + Number(global.online)); console.info('Connected ' + Object.keys(io.sockets.adapter.rooms).length + ' clients'); } function getDrops(){ requestify.post('http://localhost/api/getdrops', {}) .then(function (response) { data = JSON.parse(response.body); io.emit('welcomedrop', data.text); console.log("stats"); }, function (err) { console.log(err); }); }; function activebots() { console.log("\x1b[32m", "[NVBOT] Функция ботов сработала!"); requestify.post('http://localhost/api/playbot', {}) .then(function (response) { data = JSON.parse(response.body); var time = data.time; console.log("\x1b[32m", "[NVBOT] Фейк-Игра сыграна! ID: "+data.game+" Время: "+ Number(data.time)+"мс"); requestify.post('http://localhost/api/getGame', { id: data.game}) .then(function (response) { data = JSON.parse(response.body); io.sockets.emit('nd', data.text); setTimeout(function() { activebots(); }, time); }, function (err) { console.log(err); setTimeout(activebots, 50000); }); }, function (err) { console.log("\x1b[31m", "[NVBOT] Ошибка запроса"); setTimeout(activebots, 50000); }); } function add_online() { requestify.post('http://localhost/api/getonline', {}) .then(function (response) { data = JSON.parse(response.body); global.online = data.online; console.log("\x1b[32m", "[NVBOT] Фейк онлайн обновлен! (+" + data.online + ")"); updateOnline(); }, function (err) { console.log("\x1b[31m", "[NVBOT] Ошибка получения фейкового онлайна"); }); } А вот PHP <script src="./files/socket.io-1.4.5.js"></script> <script> var socket = io.connect(':8080', {rememberTransport: false}); socket.on('welcomedrop', function(data){ $("#response").prepend(data); //$("#oe").html(kk.count); $('#response').children().slice(20).remove(); }); socket.on('updateonline', function(data){ $("#oe").html(data); }); socket.on('nd', function(data){ $("#response").prepend(data); $('#response').children().slice(20).remove(); }); </script> <script> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); $(function() { window.history.replaceState(null, null, window.location.pathname); // getContent(); /* var conn1 = new WebSocket('ws://82.146.44.43:5858'); conn1.onmessage = function(e) { var kk = JSON.parse(e.data); $("#response").prepend(kk.new); $("#oe").html(kk.count); $('#response').children().slice(20).remove(); }; var conn2 = new WebSocket('ws://82.146.44.43:8081'); conn2.onmessage = function(e) { var kk = JSON.parse(e.data); как мне сделать так чтобы скрипт коннектился к веб сокету по 443 протоколу но не 8080 |
пробовал менять на 443 везде, пишет ошибку в консоле not found socket
|
1) сам сервер должен обслуживать https - https://stackoverflow.com/questions/...ress-js-server
2) потом надо подключиться как здесь https://stackoverflow.com/questions/...et-io-with-ssl сходу как правильно не скажу, но эти 2 надо сделать... просто версии меняются и что там у тебя я хз %) п/с/ есть варик, надо будет написать не https, a wss... |
не понимаю ничего(
не получается настроить( можете помоч?
|
$ 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 в консоле в браузере смотреть что все ок %) |
root@222:/# sudo netstat -ntulp
/etc/host.conf: line 5: bad command `localhost 222.ru' Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 502/redis-server 12 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 541/apache2 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 392/sshd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 541/apache2 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 441/mysqld tcp6 0 0 :::8080 :::* LISTEN 751/bot.js tcp6 0 0 :::22 :::* LISTEN 392/sshd |
здесь какая-то ошибка
/etc/host.conf: line 5: bad command `localhost 222.ru' тогда, там должно быть что-то типа: 127.0.0.1 localhost 222.ru |
Часовой пояс GMT +3, время: 01:10. |