设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3476|回复: 3
打印 上一主题 下一主题

透明通道,急求帮助

[复制链接]

4

主题

17

帖子

74

积分

注册会员

Rank: 2

积分
74
跳转到指定楼层
楼主
发表于 2015-8-2 11:07:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
业务服务器从数据库里读取数据,验证用户名、密码,及通过透明通道向客户端发送会议ID(roomId)、是否主持人、会议名称
static int id = 1;
        // 用户身份验证回调函数定义
        // 根据函数返回值决定是否验证身份成功,当返回0时,必须分配一个唯一的userid
        public static int OnVerifyUserCallBack(string userName, string password, ref int userID, ref int userLevel, IntPtr nickName, int len, int userValue)
        {
            SQLiteHelper db = new SQLiteHelper();
            SQLiteDataReader loginInfo = db.Read("select loginPwd,nickName,online,HYID,SFZC,HYM from userInfo where loginName = @loginName", new SQLiteParameter("@loginName", userName));
            String pwd = "";
            String trueName = "";
            int online = 0;
            string mHYID = "";
            string mSFZC = "";
            string mHYM = "";
            while (loginInfo.Read())
            {
                pwd = loginInfo.GetString(0);
                trueName = loginInfo.GetString(1);
                online = loginInfo.GetInt32(2);
                mHYID = loginInfo.GetInt32(3).ToString();
                mSFZC = loginInfo.GetInt32(4).ToString();
                mHYM = loginInfo.GetString(5);
            }
            if ((pwd).Equals(password) && online == 0)
            {
                userID = id;
                id = id + 1;
                // 返回一个用户的昵称,若为空,则核心服务器会用userName来替代
                byte[] toBytes = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("gb2312"), Encoding.UTF8.GetBytes(trueName));
                Marshal.Copy(toBytes, 0, nickName, toBytes.Length);
                db.Exc("Update userInfo set online = @userId where loginName = @loginName", new SQLiteParameter[] { new SQLiteParameter("@userId", userID), new SQLiteParameter("@loginName", userName) });
                //像客户端发送roomId等信息
                string FS = mHYID + ":" + mSFZC + ":" + mHYM;
                byte[] bytes = System.Text.Encoding.Default.GetBytes(FS);
                AnyChatServerSDK.BRAS_TransBuffer(userID, bytes, bytes.Length);
                return 0;
            }
            else if (online != 0)
            {
                return 100;
            }
            else
            {
                return 200;
            }
            db.Close();
客户端在frmRoom的
void InitChat()
        {
             ....
            SystemSetting.TransBuffer_OnReceive = new TransBufferReceivedHandler(TransBuffer_CallBack);//透明通道传输回调
....
            StringBuilder userName = new StringBuilder(30);
            int ret = AnyChatCoreSDK.GetUserName(m_myUserID, userName, 30);
            myName = userName.ToString();
            AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
           }

public void TransBuffer_CallBack(int userId, IntPtr buf, int len, int userValue)
        {
            string m_Command = Marshal.PtrToStringAnsi(buf);
            try
            {
                if (m_Command.Length > 3)
                {
                    string[] m_Packet = m_Command.Split(":".ToCharArray());
                    m_RoomID = int.Parse(m_Packet[0]);
                    SFZC =  int.Parse(m_Packet[1]);
                    HYM = m_Packet[2];                    
                }
            }
            catch (Exception ex)
            {
            }
        }
为什么TransBuffer_CallBack函数不执行,不起作用



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2015-8-2 11:32:58 | 只看该作者
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
板凳
发表于 2015-8-2 12:57:00 | 只看该作者
您好,OnVerifyUserCallBack主要用于用户身份验证,分配用户lD,不能把相关业务逻辑放在这个事件中处理!

建议您将相关业务逻辑放在OnUserLoginAction事件中!
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
地板
发表于 2015-8-2 13:14:03 | 只看该作者
就是说在OnVerifyUserCallBack事件中不能使用透明通道API接口!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-24 00:57 , Processed in 0.221066 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表