.net 直接连接到服务结构中的特定实例
我有一个游戏服务器后端服务目前正在Azure云服务上运行,并希望将其移植到服务结构上运行。我遇到了一个似乎无法解决的问题 在旧的后端云服务版本中,我们可以通过以下方式从游戏客户端直接连接到特定的工作者角色:.net 直接连接到服务结构中的特定实例,.net,azure,azure-service-fabric,.net,Azure,Azure Service Fabric,我有一个游戏服务器后端服务目前正在Azure云服务上运行,并希望将其移植到服务结构上运行。我遇到了一个似乎无法解决的问题 在旧的后端云服务版本中,我们可以通过以下方式从游戏客户端直接连接到特定的工作者角色: 使用本地端口和公共端口范围配置InstanceInputEndPoint 通过以下方式获取要将套接字绑定到的专用ip:端口: RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“GameServer”].IPEndpoint;
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“GameServer”].IPEndpoint;
var publicAddress=IPAddress.Parse(roleenEnvironment.GetConfigurationSettingValue(“publicAddress”);
var publicPort=RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“GameServer”].publicpendpoint.Port;
返回新的IPEndPoint(publicAddress、publicPort);
我当前的问题只是,我认为service fabric中没有办法复制此设置,基本上是让我告诉客户端“直接连接到我的游戏服务器服务的此特定实例”。因为您试图将现有应用程序迁移到service fabric,所以可以按照下面描述的步骤进行操作。但是,如果你正在创建一个新的应用程序,你应该考虑使用.< /p>
<Endpoints>
<Endpoint Name="GameServer" Protocol="http" />
</Endpoints>
int port = Context.CodePackageActivationContext.GetEndpoint("GameServer").Port;
您可以使用以下格式创建侦听地址:
string listeningAddress = $"http://+:{port}/{applicationName}/";
这是假设您使用的是无状态服务。如果您使用的是有状态服务,则应添加:
StatefulServiceContext ssc = (StatefulServiceContext) Context;
listeningAddress += ssc.PartitionId + "/" + ssc.ReplicaId + "/";
string publishAddress = listeningAddress.Replace("+", FabricRuntime.GetNodeContext().IPAddressOrFQDN);
publishAddress = publishAddress.Replace("http", "ws");
您可以在上找到有关侦听器的详细信息。因为您正在尝试将现有应用程序迁移到service fabric,所以可以按照下面描述的步骤进行操作。但是,如果你正在创建一个新的应用程序,你应该考虑使用.< /p>
<Endpoints>
<Endpoint Name="GameServer" Protocol="http" />
</Endpoints>
int port = Context.CodePackageActivationContext.GetEndpoint("GameServer").Port;
您可以使用以下格式创建侦听地址:
string listeningAddress = $"http://+:{port}/{applicationName}/";
这是假设您使用的是无状态服务。如果您使用的是有状态服务,则应添加:
StatefulServiceContext ssc = (StatefulServiceContext) Context;
listeningAddress += ssc.PartitionId + "/" + ssc.ReplicaId + "/";
string publishAddress = listeningAddress.Replace("+", FabricRuntime.GetNodeContext().IPAddressOrFQDN);
publishAddress = publishAddress.Replace("http", "ws");
您可以在上找到有关侦听器的更多信息。我可以问一下您为什么需要/想要这种行为吗?我们谈论的是无状态或有状态服务吗?我可以问一下为什么需要/想要这种行为吗?我们说的是无状态的还是有状态的服务?那就是@Wouter B那正是我要找的…那就是@Wouter B那正是我要找的。。。