示例#1
0
        /// <summary>
        /// 独立信令 创建频道
        /// 该接口用户创建频道,同一时刻频道名互斥,不能重复创建。但如果频道名缺省,服务器会自动分配频道id。
        /// 对于频道在创建后如果没人加入,有效期2小时,当有成员加入后会自动延续频道有效期。当主动关闭频道或者最后一个成员退出后2小时后频道销毁。
        /// </summary>
        /// <param name="param">创建频道的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void CreateChannel(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            int    nSizeOfParam = Marshal.SizeOf(param);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_create_channel(param_ptr, NimSignalingCreateCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
示例#2
0
        /// <summary>
        /// 独立信令 接受邀请接口
        /// 不开自动加入开关:该接口只接受邀请并告知邀请者,并同步通知自己的其他在线设备,但不会主动加入频道,需要单独调用加入接口
        /// 打开自动加入开关:该接口为组合接口,等同于先调用接受邀请,成功后再加入频道。
        /// 该接口在打开自动加入开关后是组合接口,对应的通知会有2个,接收邀请通知和加入通知
        /// </summary>
        /// <param name="param">接受邀请的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs,其中opt_res_param在打开自动加入开关,并成功后有效</param>
        public static void Accept(NIMSignalingAcceptParam param, InviteDelegate cb)
        {
            int    nSizeOfParam = Marshal.SizeOf(param);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_accept(param_ptr, NimSignalingAcceptCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
示例#3
0
        /// <summary>
        /// 独立信令 用户自定义控制指令接口
        /// 该接口用于在频道中透传一些自定义指令,协助频道管理
        /// </summary>
        /// <param name="param">控制通知的传入参数,接收方to_填空为群发,只支持在线通知</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void Control(NIMSignalingControlParam param, NimSignalingOptControlHandler cb)
        {
            NIMSignalingControlParam_C param_c = SignalHelper.GetNativeNIMSignalingControlParam(param);
            int    nSizeOfParam = Marshal.SizeOf(param_c);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param_c, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_control(param_ptr, NimSignalingControlCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
示例#4
0
        /// <summary>
        /// 独立信令 创建频道
        /// 该接口用户创建频道,同一时刻频道名互斥,不能重复创建。但如果频道名缺省,服务器会自动分配频道id。
        /// 对于频道在创建后如果没人加入,有效期2小时,当有成员加入后会自动延续频道有效期。当主动关闭频道或者最后一个成员退出后2小时后频道销毁。
        /// </summary>
        /// <param name="param">创建频道的传入参数</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void SignalingCreate(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            NIMSignalingCreateParam_C param_c = SignalHelper.GetNativeNIMSignalingCreateParam(param);
            int    nSizeOfParam = Marshal.SizeOf(param_c);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param_c, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_create(param_ptr, NimSignalingCreateCb, user_ptr);
            }
            catch (Exception)
            {
                cb?.Invoke(NIMSignalingCreateResCode.kAbnormal, null);
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
示例#5
0
        /// <summary>
        /// 注册独立信令的频道成员变更同步回调接口
        /// 用于同步频道内的成员列表变更,当前该接口为定时接口,2分钟同步一次,成员有变化时才上报。
        /// </summary>
        /// <param name="cb">cb 结果回调见NimSignalingDef.cs</param>
        public static void RegMembersSyncCb(NimSignalingMembersSyncHandler cb)
        {
            var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            SignalingNativeMethods.nim_signaling_reg_members_sync_cb(NimSignalingMembersSyncCb, ptr);
        }
示例#6
0
        /// <summary>
        /// 注册独立信令的离线通知回调接口
        /// 需要用户在调用相关接口时,打开存离线的开关。如果用户已经接收消息,该通知会在服务器标记已读,之后不会再收到该消息。
        /// </summary>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void RegOfflineNotifyCb(NimSignalingNotifyListHandler cb)
        {
            var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            SignalingNativeMethods.nim_signaling_reg_offline_notify_cb(NimSignalingNotifyListCb, ptr);
        }
示例#7
0
        /// <summary>
        /// 注册独立信令的多端同步通知回调接口,用于通知信令相关的多端同步通知。比如自己在手机端接受邀请,PC端会同步收到这个通知
        /// </summary>
        /// <param name="cb">结果回调见NimSignalingDef.cs</param>
        public static void RegMutilClientSyncNotifyCb(NimSignalingNotifyHandler cb)
        {
            var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            SignalingNativeMethods.nim_signaling_reg_mutil_client_sync_notify_cb(NimSignalNotifyCb, ptr);
        }
示例#8
0
        public static void CreateChannel2(NIMSignalingCreateParam param, NimSignalingOptCreateHandler cb)
        {
            var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            SignalingNativeMethods.nim_signaling_create_channel2(ref param, NimSignalingCreateCb, user_ptr);
        }