В настоящее время мы создаем серверное приложение (развертывание в VaporCloud), которое связывает JavaScript браузера и WebSocket с Vapor 3.0.8 и Swift4.1. В этом случае, хотя мы можем подключить веб-сокет, даже если мы не оставим сообщение как есть, onClose произойдет на стороне JavaScript примерно через 30 секунд, и соединение будет потеряно. Как мы можем поддерживать связь?
[Источники на стороне сервера Sources/App/configure.swift)]
public func configure(_ config: inout Config, _ env: inout Environment, _
services: inout Services) throws {
let wss = NIOWebSocketServer.default()
wss.get(at:["chat"], use:{ ws,req in
ws.onText({ (ws, text) in
.....
ws.send("test")
.....
})
.....
})
services.register(wss, as: WebSocketServer.self)
.....
[Сторонний источник JavaScript]
ws = new WebSocket('wss://hostname');
ws.onopen = function() {
.....
ws.send("test connect");
};
$('form').on('submit', function(e) {
e.preventDefault();
ws.send("test");
});
ws.onmessage = function(event) {
console.log("data=" + event.data);
.....
}
ws.onclose = function (e) {
console.log("Close Code = " + e.code); // return 1006
console.log("Close Reason = " + e.reason); // null
.....
}