nginx не удалось открыть соединение через веб-сокет из-за неверного заголовка соединения: сохранить в живых - PullRequest
0 голосов
/ 11 января 2020

У меня есть python сервер веб-сокетов, и я хочу обслужить его в nginx. так что это мой серверный код:

import asyncio 
import websockets


async def recv_message(websocket, path):

    message = await websocket.recv()
    print(message)


def main():

    start_server = websockets.serve(recv_message, "localhost", 8765)

    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()

if __name__ == "__main__":

    main()

и это моя nginx конфигурация:

server{
     listen 8765;
     server_name localhost;

     location / {
     proxy_pass ws://localhost;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "Upgrade";

 }

}

когда я go до localhost:8765, я получаю сообщение от на веб-странице написано

Failed to open a WebSocket connection: invalid Connection header: keep-alive.

You cannot access a WebSocket server directly with a browser. You need a WebSocket client.

как мне открыть соединение с веб-сокетом? есть ли ошибка в моей конфигурации? Я продолжаю застревать в этой проблеме, так как я новичок в разработке программного обеспечения. заранее спасибо

1 Ответ

0 голосов
/ 30 апреля 2020

Это нормально, вы должны открыть адрес с помощью «front-end». Вы должны иметь возможность подключиться, используя эти два файла:

index. html:

<!DOCTYPE html><html lang="en">
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta charset="utf-8">

  </head>
  <body>
    <script src="client.js"></script>
</body></html>

client. js:

function startSocket() {
    var ws = new WebSocket("ws://localhost:8765/")
    ws.onopen = function(event) {
        ws.send("Sent this from client.js")
    }
}
startSocket();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...