网络上两个点头之间的反应式和并发游戏
Reactive and concurrent game between two nods over the network
我使用 scala 和 scalajs 实现了两个玩家的乒乓球游戏,到目前为止我可以使用 4 个不同的键作为两个玩家玩,现在我希望 运行 在两台电脑之间通过 network.Any反应和并发工具的建议来做到这一点?
也许,当客户端发送太多请求时,您可能需要 Reactive Streams 和他们的背压协议来避免服务器崩溃。基本上,您将能够为您的服务器事件消费者指定不同的策略。
Web-Socket 也很方便。您的 Scala.js 代码将通过 WS
向服务器发送消息
我会推荐 Akka-Streams:https://doc.akka.io/docs/akka-http/current/server-side/websocket-support.html
如果您尝试在两台 PC 之间进行点对点操作,主要问题是发现和建立连接。出于安全原因,很难直接打开到客户端机器的套接字,尤其是当它们都在标准消费者路由器后面时。您可能需要一台服务器来启动发现过程(或者其中一台 PC 需要打开其防火墙),您可能会发现通过服务器路由通信更容易。
这里没有简单的答案,这不是 Scala.js 本身的事情 - 只是从遥远的过去构建点对点游戏中吸取的经验教训。网络堆栈是困难的部分...
我使用 scala 和 scalajs 实现了两个玩家的乒乓球游戏,到目前为止我可以使用 4 个不同的键作为两个玩家玩,现在我希望 运行 在两台电脑之间通过 network.Any反应和并发工具的建议来做到这一点?
也许,当客户端发送太多请求时,您可能需要 Reactive Streams 和他们的背压协议来避免服务器崩溃。基本上,您将能够为您的服务器事件消费者指定不同的策略。
Web-Socket 也很方便。您的 Scala.js 代码将通过 WS
向服务器发送消息
我会推荐 Akka-Streams:https://doc.akka.io/docs/akka-http/current/server-side/websocket-support.html
如果您尝试在两台 PC 之间进行点对点操作,主要问题是发现和建立连接。出于安全原因,很难直接打开到客户端机器的套接字,尤其是当它们都在标准消费者路由器后面时。您可能需要一台服务器来启动发现过程(或者其中一台 PC 需要打开其防火墙),您可能会发现通过服务器路由通信更容易。
这里没有简单的答案,这不是 Scala.js 本身的事情 - 只是从遥远的过去构建点对点游戏中吸取的经验教训。网络堆栈是困难的部分...