ntminer 5 years ago
parent
commit
716a0ee297

+ 2 - 2
src/NTMinerDaemon/Ws/AbstractWsClient.cs

@@ -354,12 +354,12 @@ namespace NTMiner.Ws {
             }
             // WebSocketSharp内部限定了连接重试次数,这不符合我们的业务逻辑,这里通过反射赋值使WebSocketSharp的重试次数限制失效。
             _retryCountForConnectFieldInfo.SetValue(ws, 1);
-            // 附加上前缀从而向服务器传递用户类型信息
             WsUserName userName = new WsUserName {
                 ClientType = _appType,
                 ClientVersion = EntryAssemblyInfo.CurrentVersionStr, 
                 ClientId = NTMinerRegistry.GetClientId(_appType), 
-                UserId = _outerUserId
+                UserId = _outerUserId,
+                IsBinarySupported = true
             };
             string userNameJson = VirtualRoot.JsonSerializer.Serialize(userName);
             string password = string.Empty;

+ 1 - 0
src/NTMinerDataSchemas/NTMinerDataSchemas.csproj

@@ -71,6 +71,7 @@
     <Compile Include="Core\OperationResultData.cs" />
     <Compile Include="Core\Profile\WorkIgnoreAttribute.cs" />
     <Compile Include="TypeExtensions.cs" />
+    <Compile Include="User\IWsUserName.cs" />
     <Compile Include="VirtualMemory\DriveDto.cs" />
     <Compile Include="VirtualMemory\IDrive.cs" />
     <Compile Include="ServerNode\GetWsServerNodeAddressRequest.cs" />

+ 11 - 0
src/NTMinerDataSchemas/User/IWsUserName.cs

@@ -0,0 +1,11 @@
+using System;
+
+namespace NTMiner.User {
+    public interface IWsUserName {
+        NTMinerAppType ClientType { get; }
+        string ClientVersion { get; }
+        Guid ClientId { get; }
+        string UserId { get; }
+        bool IsBinarySupported { get; }
+    }
+}

+ 1 - 1
src/NTMinerDataSchemas/User/WsUserName.cs

@@ -1,7 +1,7 @@
 using System;
 
 namespace NTMiner.User {
-    public class WsUserName {
+    public class WsUserName : IWsUserName {
         public WsUserName() { }
 
         public NTMinerAppType ClientType { get; set; }

+ 3 - 1
src/WsServer/Core/ISession.cs

@@ -1,7 +1,9 @@
-using System;
+using NTMiner.User;
+using System;
 
 namespace NTMiner.Core {
     public interface ISession {
+        IWsUserName WsUserName { get; }
         /// <summary>
         /// 客户端进程的标识:挖矿端进程的标识或群控客户端进程的标识
         /// </summary>

+ 6 - 3
src/WsServer/Core/Impl/AbstractSession.cs

@@ -8,14 +8,17 @@ namespace NTMiner.Core.Impl {
         /// </summary>
         /// <param name="user"></param>
         /// <param name="wsSessionID"></param>
-        public AbstractSession(IUser user, WsUserName userName, string wsSessionID) {
-            this.ClientId = userName.ClientId;
-            this.ClientVersion = Version.Parse(userName.ClientVersion);// 因为前面的流程已经过验证所以可以直接Parse
+        public AbstractSession(IUser user, WsUserName wsUserName, string wsSessionID) {
+            this.WsUserName = wsUserName;
+            this.ClientId = wsUserName.ClientId;
+            this.ClientVersion = Version.Parse(wsUserName.ClientVersion);// 因为前面的流程已经过验证所以可以直接Parse
             this.LoginName = user.LoginName;
             this.ActiveOn = DateTime.Now;
             this.WsSessionId = wsSessionID;
         }
 
+        public IWsUserName WsUserName { get; private set; }
+
         public Guid ClientId { get; private set; }
 
         public Version ClientVersion { get; private set; }

+ 4 - 4
src/WsServer/Core/Impl/MinerClientSession.cs

@@ -3,12 +3,12 @@ using NTMiner.User;
 
 namespace NTMiner.Core.Impl {
     public class MinerClientSession : AbstractSession, IMinerClientSession {
-        public static MinerClientSession Create(IUser user, WsUserName userName, string wsSessionID) {
-            return new MinerClientSession(user, userName, wsSessionID);
+        public static MinerClientSession Create(IUser user, WsUserName wsUserName, string wsSessionID) {
+            return new MinerClientSession(user, wsUserName, wsSessionID);
         }
 
-        private MinerClientSession(IUser user, WsUserName userName, string wsSessionID)
-            : base(user, userName, wsSessionID) {
+        private MinerClientSession(IUser user, WsUserName wsUserName, string wsSessionID)
+            : base(user, wsUserName, wsSessionID) {
         }
 
         public string GetSignPassword() {