У меня есть локальный веб-сервер, на котором я могу обрабатывать недействительные HTTP пакеты.Например, те, которые не начинаются со стандартных методов заголовка HTTP, таких как GET POST PUT и т. Д. .
Таким образом, я могу анализировать данные сокетов, даже если они не совместимы с HTTP.Это код:
var express = require("express");
var app = express();
var server = app.listen(process.env.PORT || 5000);
app.get("/", (req, res) => {
res.send("Hello Riko");
});
onSocketError = err => {
console.log("Socket Error: " + err);
};
server.on("connection", function(socket) {
socket.on("data", data => {
console.log(data.toString());
});
console.log("A new connection was made by a client.");
});
server.on("clientError", (err, socket) => {
console.log("CLIENT ERROR!");
socket.removeAllListeners("error");
});
Запуск его на Heroku не работает так же.Я отвечаю на TCP-клиент
запрос:
GET / HTTP / 1.1 \ r \ nHost: rikoto.herokuapp.com \ r \ n \ r \ n
как и ожидалось.Ответное сообщение:
+IPD,246:HTTP/1.1 200 OK
Server: Cowboy
Connection: keep-alive
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 10
Etag: W/"a-1i9Fh6ETfQADte3Iit4UFXuXMKs"
Date: Thu, 22 Nov 2018 15:09:25 GMT
Via: 1.1 vegur
Hello Riko
Но этот код:
server.on("clientError", (err, socket) => {
console.log("CLIENT ERROR!");
socket.removeAllListeners("error");
});
, который отлично работает на моем локальном компьютере, игнорируется Heroku.Это ссылка на приложение: https://rikoto.herokuapp.com/
***** РЕДАКТИРОВАТЬ ***** Я приложил видео, чтобы продемонстрировать проблему: https://youtu.be/c-Q7ge7cuFA