nodejs & hellip; socket.io & hellip; http до https [дубликат]

Когда вы вызываете getDownloadUrl(), вызов является асинхронным, и вы должны подписаться на успешный обратный вызов, чтобы получить результаты:

// Calls the server to securely obtain an unguessable download Url
private void getUrlAsync (String date){
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" + date+ ".csv");
    dateRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
    {
        @Override
        public void onSuccess(Uri downloadUrl) 
        {                
           //do something with downloadurl
        } 
    });
}

Это вернет общедоступный неопознанный URL-адрес загрузки. Если вы просто загрузили файл, этот общедоступный URL-адрес будет включен в обратный вызов для загрузки (вам не нужно вызывать другой метод async после того, как вы его загрузили).

Однако, если все, что вы хотите, a String представления ссылки, вы можете просто вызвать .toString()

// Returns a Uri of the form gs://bucket/path that can be used
// in future calls to getReferenceFromUrl to perform additional
// actions
private String niceRefLink (String date){
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" + date+ ".csv");
    return dateRef.toString();
}
132
задан Zeeshan Hassan Memon 24 April 2016 в 19:37
поделиться

5 ответов

Используйте безопасный URL для вашего первоначального соединения, то есть вместо «http: //» используйте «https: //». Если транспорт WebSocket выбран, то Socket.IO должен автоматически использовать «wss: //» (SSL) для соединения WebSocket.

Обновление:

Вы также можете попробовать создать соединение с использованием опции «secure»:

var socket = io.connect('https://localhost', {secure: true});
157
ответ дан kanaka 23 August 2018 в 17:00
поделиться

Если вашему сертифицированному файлу сервера не доверяют (например, вы можете создать хранилище ключей самостоятельно с помощью команды keytool в java), вы должны добавить дополнительную опцию rejectUnauthorized

var socket = io.connect('https://localhost', {rejectUnauthorized: false});
6
ответ дан clevertension 23 August 2018 в 17:00
поделиться

В том же примечании, если ваш сервер поддерживает как http, так и https, вы можете подключиться с помощью:

var socket = io.connect('//localhost');

до автоматически определить схему браузера и подключиться используя соответственно http / https. когда в https транспорт будет защищен по умолчанию, поскольку соединение с использованием

var socket = io.connect('https://localhost');

будет использовать защищенные веб-сокеты - wss:// (избыточность {secure: true}).

для получения дополнительной информации о том, как легко обслуживать как http, так и https, используя тот же сервер узлов, проверьте этот ответ .

26
ответ дан Community 23 August 2018 в 17:00
поделиться

Вот как мне удалось настроить его с помощью выражения:

var fs = require( 'fs' );
var app = require('express')();
var https        = require('https');
var server = https.createServer({
    key: fs.readFileSync('./test_key.key'),
    cert: fs.readFileSync('./test_cert.crt'),
    ca: fs.readFileSync('./test_ca.crt'),
    requestCert: false,
    rejectUnauthorized: false
},app);
server.listen(8080);

var io = require('socket.io').listen(server);

io.sockets.on('connection',function (socket) {
    ...
});

app.get("/", function(request, response){
    ...
})

Надеюсь, что это спасет чье-то время.

Обновление: для тех, кто использует, разрешает шифрование использовать это

var server = https.createServer({ 
                key: fs.readFileSync('privkey.pem'),
                cert: fs.readFileSync('fullchain.pem') 
             },app);
29
ответ дан emonik 23 August 2018 в 17:00
поделиться

проверить это.конфигурацию ..

app = module.exports = express();
var httpsOptions = { key: fs.readFileSync('certificates/server.key'), cert: fs.readFileSync('certificates/final.crt') };        
var secureServer = require('https').createServer(httpsOptions, app);
io = module.exports = require('socket.io').listen(secureServer,{pingTimeout: 7000, pingInterval: 10000});
io.set("transports", ["xhr-polling","websocket","polling", "htmlfile"]);
secureServer.listen(3000);
4
ответ дан Jay Jariwala 23 August 2018 в 17:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: