Невозможно подключить защищенную веб-розетку - PullRequest
0 голосов
/ 23 февраля 2019

Используя nodejs, этот клиентский код не работает:

var sock= require('websocket').w3cwebsocket;


var sock= new W3CWebSocket("wss://" + 'www.mysite.com'+ ':31333');

sock.onopen = function (evt)
    {
        console.log("it never reaches here");


//..................
}

На самом деле он работал, когда мой сервер nodejs не использовал SSL, поэтому этот код работал:

var sock= new W3CWebSocket("ws://" + 'www.mysite.com'+ ':31333');

Код сервера выглядит следующим образом:

var ws = require("./nodejs-websocket");
var fs = require('fs');

var options = {
    secure: true,
    key: fs.readFileSync('ssl/mysite.com.key'),
    cert: fs.readFileSync('ssl/mysite.com.crt')
};

var server = ws.createServer(options, function (conn)
    {
        console.log("New connection")
        conn.on("text", function (str)
            {

               //some code here

            });
        conn.on("close", function (code, reason)
            {
                console.log("Connection closed")
            });

    }).listen(31333);

Из браузера я могу общаться с этим сервером с помощью веб-сокетов.Но не из командной строки Linux.Как заставить его работать из командной строки Linux?

1 Ответ

0 голосов
/ 23 февраля 2019

Я не могу много говорить с библиотекой, которую вы используете.Но я должен был иметь безопасные WebSockets также для недавнего.и использовал эту библиотеку вместо socket.io-redis socket.io Они специально позволяют использовать безопасные соединения.Ниже приведен пример кода того, как это работает, и приведенные выше ссылки приведут к документации.

var redis = require('redis');

var client = redis.createClient(config.redisPort,config.redis,
  {auth_pass: config.reDISCACHEKEY, tls: {servername: config.redis}}); //creates a new client
var sclient=redis.createClient(config.redisPort,config.redis,
  {auth_pass: config.reDISCACHEKEY, tls: {servername: config.redis}}); //creates a new client

var io = require('socket.io').listen(app);
var redis = require('socket.io-redis');

io.adapter(redis({pubClient:client,subClient:sclient}))

io.on('connection', function(socket){

  client.set(socket.handshake.query.userName, socket.id);

    //sets what happens when a socket disconnects
    //deletes socket information

   socket.on('disconnect', function(){
     let name=socket.handshake.query.userName;
     client.del(name, function(err, reply) {
     });
   });
   socket.on('message', function(msg, func){
     let name=socket.handshake.query.userName;
     let sockectObj=msg;
     io.emit('Message', sockectObj);
   });
 });

Дайте мне знать, если потребуется больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...