Реактивная и параллельная игра между двумя кивками по сети

Я реализовал игру для двух игроков, используя scala и scalajs, так что я могу играть как два игрока, используя 4 разные клавиши, и теперь я хочу запустить ее между двумя компьютерами по сети. Есть предложения для реактивных и одновременных инструментов для этого?

2 ответа

Решение
  1. Возможно, вам понадобятся Reactive Streams и их протокол обратного давления, чтобы не сбить сервер, когда клиенты отправляют слишком много запросов. По сути, вы сможете указать разные стратегии для вашего сервера событий.

  2. Веб-сокет тоже подойдет. Ваш код Scala.js будет отправлять сообщения на сервер через WS

Я бы порекомендовал Akka-Streams: https://doc.akka.io/docs/akka-http/current/server-side/websocket-support.html

или Http4s-fs2 https://github.com/http4s/http4s/blob/master/examples/blaze/src/main/scala/com/example/http4s/blaze/BlazeWebSocketExample.scala

Если вы пытаетесь сделать это одноранговым между двумя компьютерами, основной проблемой будет обнаружение и настройка соединения. По соображениям безопасности трудно открыть сокет непосредственно на клиентском компьютере, особенно если они оба находятся за стандартными потребительскими маршрутизаторами. Вам может потребоваться сервер для запуска процесса обнаружения (или один из компьютеров должен открыть свой брандмауэр), и вам может оказаться проще маршрутизировать связь через сервер.

Здесь нет простых ответов, и это не Scala.js как таковая - просто уроки, извлеченные из создания одноранговых игр в далеком прошлом. Сетевой стек является сложной частью...

Другие вопросы по тегам