Почему мой WebSocket не подключается? Nextjs -> nginx -> Scala (Akka -HTTP)Javascript

Форум по Javascript
Ответить
Anonymous
 Почему мой WebSocket не подключается? Nextjs -> nginx -> Scala (Akka -HTTP)

Сообщение Anonymous »

фон:
У меня есть Scala (с Akka-http ) веб-сервер, работающий позади Nginx. У меня также есть приложение NextJS , работающее за тем же Nginx. Соединение с WebServer.
Я следовал официальной документации и рекомендациям, и это моя текущая реализация:
Сторона веб -сервера:

Код: Выделить всё

  val responseQueue: mutable.Queue[ApiResponse] = mutable.Queue()

private def webSocketFlow: Flow[Message, Message, _] = {
Flow[Message].mapAsync(1) { _ =>
if (responseQueue.nonEmpty) {
system.log.info("Flushing responseQueue")
val response = responseQueue.dequeue()
val protobufMessage = ByteString(response.toByteArray)

Future.successful(BinaryMessage(protobufMessage))
} else {
system.log.warn("Response queue empty")
Future.successful(BinaryMessage(ByteString.empty))
}
}
}

private def websocketRoute: Route = {
pathPrefix("ws") {
pathEndOrSingleSlash {
extractRequest { req =>
// extract auth token from header
val tokenOpt = req.headers.collectFirst {
case header if header.name() == "Sec-WebSocket-Protocol" =>
OAuth2BearerToken(header.value()) // Extract the value of the Sec-WebSocket-Protocol header
}

system.log.info(s"Handling ws auth:${tokenOpt.toString}")

// run it through token verification
extractUri { uri =>
val callingURI = uri.toRelative.path.dropChars(1).toString

system.log.info(s"===== $callingURI")

oAuthAuthenticator(Credentials(tokenOpt), handleWebSocketMessages(webSocketFlow), callingURI).get
}
}
}
}
}

private def oAuthAuthenticator(credentials: Credentials, protectedRoutes: Route, callingURI: String): Option[Route] =
credentials match {
case p@Credentials.Provided(_) =>
system.log.info("Credentials provided")
val user = loggedInUsers.find(user => p.verify(user.oAuthToken.access_token))
if (user.isDefined) {
system.log.info(s"User found:${user.head.toString}")
val userPermissions = Permissions.valueOf(user.head.user.username.toUpperCase) // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79458181/why-is-my-websocket-failing-to-connect-nextjs-nginx-scalaakka-http[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»