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, время: 19:25. |