我试图制作游戏,想象一下,如果我有2个客户:玩家A和玩家B.
两者都已向服务器发送消息以识别自己。所以两者都已登录。
现在玩家A想要攻击玩家B.我如何保留IP或玩家的某些东西,以便服务器能够向玩家B发送消息让他知道他受到了攻击?
我正在使用rabbitmq。
答案 0 :(得分:1)
我过去处理此问题的方式是为客户(您的情况下的玩家)拥有自己的队列。或者,如果您想通知所有玩家,您可以设置主题交换。
他是我现在的设置。
直接交换:App.Server(客户端发布,服务器消耗)
直接交换:App.Client.UniqueIDForClient1(服务器发布,仅客户端1消耗)
直接交换:App.Client.UniqueIDForClient2(服务器发布,仅客户端2消费)
主题交换:应用程序(服务器发布,所有客户端订阅App.Client)
如果您使用的是c#,则可以按照以下方式设置并发布到主题交换:
ConnectionFactory mqFactory = new ConnectionFactory();
mqFactory.HostName = "localhost";
IConnection mqConnection = mqFactory.CreateConnection();
IModel mqChannel = mqConnection.CreateModel();
mqChannel.ExchangeDeclare("App", "topic", true);
response = "This Message Will Go To All Topic Subscribers";
mqChannel.BasicPublish("App", "App.Client", null, Encoding.UTF8.GetBytes(response));
我目前没有使用消费者/订阅者代码,因为我的客户端目前是使用PHP / AJAX的Web应用程序。
以下是官方RabbitMQ教程的链接,其中包含订户方示例:https://www.rabbitmq.com/tutorials/tutorial-five-dotnet.html