Пример #1
0
        /// <summary>
        /// 群组发送消息
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public Task ClientSendMsgToGroup(ClientToGroupMessage message)
        {
            //先生成groupid
            var groupId = GroupHelper.CreateGroup().CreateName(message.to.id);

            message.roomid = groupId;
            //保存消息
            Task.Run(() => {
                MessageFactory.CreateInstance(ChatMessageSaveType.SearchEngine).Send(message);
            });
            //处理保存消息业务
            //发送给客户端
            ClientToClientReceivedMessage tomessage = new ClientToClientReceivedMessage
            {
                fromid   = message.mine.id,
                id       = message.to.id,        //注意,这里的群组发送人,就应该是群id了
                avatar   = message.mine.avatar,  //发送人头像
                content  = message.mine.content, //发送内容
                type     = message.to.type,      //类型 这里一定是friend
                username = message.mine.username //发送人姓名
            };
            ToClientMessageResult result = new ToClientMessageResult
            {
                msg     = tomessage,
                other   = null,
                msgtype = ChatToClientType.ClientToGroup//这里是群组类型
            };

            return(Clients.Group(groupId).receiveMessage(result));
        }
Пример #2
0
        /// <summary>
        /// 群聊
        /// </summary>
        /// <param name="sid"></param>
        /// <param name="rid"></param>
        /// <returns></returns>
        public Task ClientToGroup(int fromUserId, int toGroupId)
        {
            var groupId = GroupHelper.CreateGroup().CreateName(toGroupId);

            Groups.Add(CurrentConnectId, groupId);
            return(Clients.Group(groupId).receiveMessage("用户" + fromUserId + " 上线啦"));
        }
Пример #3
0
        /// <summary>
        /// 客户端聊天消息
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public Task ClientSendMsgToClient(ClientToClientMessage message)
        {
            //先生成groupid
            var groupId = GroupHelper.CreateGroup().CreateName(message.mine.id, message.to.id);

            message.roomid = groupId;
            //处理保存消息业务
            Task.Run(() => {
                ElasticMessage.Instance.Send(message);
            });
            #region  //发送给客户端

            ClientToClientReceivedMessage tomessage = new ClientToClientReceivedMessage
            {
                fromid   = message.mine.id,
                id       = message.mine.id,      //发送人id
                avatar   = message.mine.avatar,  //发送人头像
                content  = message.mine.content, //发送内容
                type     = message.to.type,      //类型 这里一定是friend
                username = message.mine.username //发送人姓名
            };
            ToClientMessageResult result = new ToClientMessageResult
            {
                msg = tomessage, other = null, msgtype = ChatToClientType.ClientToClient
            };
            #endregion
            return(Clients.Group(groupId).receiveMessage(result));
        }
Пример #4
0
        public Api(ITurnResolver turnResolver, GroupHelper groupHelper, PersonHelper personHelper)
        {
            /* allow CORS */
            Options("/{catchAll*}", parameters => new Response {
                StatusCode = HttpStatusCode.Accepted
            });

            After += (Context) =>
            {
                Context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
                Context.Response.Headers.Add("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
                Context.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, x-requested-with, Authorization, Accept, Origin");
            };
            /* CORS end */

            this.turnResolver = turnResolver;
            this.groupHelper  = groupHelper;
            this.personHelper = personHelper;

            Get(prefix + "group/{groupId}/next", o => turnResolver.NextPerson(o["groupId"]));
            Get(prefix + "group/{groupId}", o => groupHelper.GroupMemberInfo(o.groupId));
            Post(prefix + "group/{name}", o => groupHelper.CreateGroup(o.name));
            Post(prefix + "group/{groupId}/add/{pid}", o => groupHelper.AddPersonToGroup(o.groupId, o.pid));
            Post(prefix + "group/{groupMemberId}/contribute/{value}", o => groupHelper.AddValueToPersonInGroup(o.groupMemberId, o.value));

            Post(prefix + "person/{name}", o => personHelper.CreatePerson(o.name));
        }
Пример #5
0
        static void Main(string[] args)
        {
            //ClientContext ctx = Common.Helpers.ContextHelper.GetSPContext("https://folkuniversitetetsp2016.sharepoint.com/sites/David/").Result;

            //ctx.Load(ctx.Web);
            //ctx.ExecuteQuery();

            //Console.WriteLine(ctx.Web.Title);


            //string webhookurl = "https://davidfa.azurewebsites.net/api/WebHookEndPoint?req=cw5TPHNRsc6iZe5Q0V3TzMXN4XgMxb6F/HP4XEcpPxhQI5AzPAZcwg==";


            //WebhookSubscription subscription = ctx.Web.GetListByTitle("CustomList").AddWebhookSubscription(webhookurl, DateTime.Now.AddMonths(5));



            var status = GroupHelper.CreateGroup("csharp", "csharpdesc", "csharp").Result;
            var groups = GroupHelper.GetGroups().Result;

            // you may need to store the subscription id in the future in order to renew it when needed
            // Console.WriteLine("subscription = " + subscription.Id.ToString());
            Console.WriteLine("done");
            Console.ReadLine();
        }
Пример #6
0
        /// <summary>
        /// 单聊连接 1v1
        /// </summary>
        public Task ClientToClient(int fromUserId, int toUserId)
        {
            var groupId = GroupHelper.CreateGroup().CreateName(fromUserId, toUserId);

            //将当前连接人加入到组织内(同理,对方恰好在线的话,那么他们相当于在同一个聊天室内,就可以愉快的聊天了)
            Groups.Add(CurrentConnectId, groupId);
            //var result = MessageHelper.GetCTCConnectedMessage(sid, rid, history: history, isFriend: isFriend);
            //
            //
            return(Clients.Caller.receiveMessage("链接成功,这里可以处理对方是否在线或者历史记录等。。。。"));
            // return Clients.User(CurrentUserId).receiveMessage("链接成功,这里可以处理对方是否在线或者历史记录等。。。。");
        }
Пример #7
0
        public static void SendMessage(string userName, int groupId)
        {
            //构造消息体
            ToClientMessageResult result = new ToClientMessageResult
            {
                msg     = userName + " 加入群",
                msgtype = ChatToClientType.UserJoinGroupToClient,
                other   = new { groupid = groupId }
            };

            var groupName = GroupHelper.CreateGroup().CreateName(groupId);

            hub.Clients.Group(groupName).receiveMessage(result);
        }
Пример #8
0
        private void UserOnline()
        {
            //将当前用户添加到redis在线用户缓存中
            LayIMCache.Instance.OperateOnlineUser(CurrentOnlineUser);
            //发送用户上线消息
            HubServer.HubServerHelper.SendUserOnOffLineMessage(CurrentUserId);
            //由于用户群一般不多,这里直接将用户全部加入群组中
            var groups = LayimUserBLL.Instance.GetUserAllGroups(CurrentUserId);

            //遍历组,该connectionId加入到组中,防止收不到消息
            foreach (string group in groups)
            {
                var g = GroupHelper.CreateGroup().CreateName(group.ToInt());
                Groups.Add(CurrentConnectId, g);
            }
        }
Пример #9
0
        /// <summary>
        /// 群聊
        /// </summary>
        /// <param name="sid"></param>
        /// <param name="rid"></param>
        /// <returns></returns>
        public Task ClientToGroup(int fromUserId, int toGroupId)
        {
            var groupId = GroupHelper.CreateGroup().CreateName(toGroupId);

            return(Clients.User(CurrentUserId).receiveMessage("连接聊天室" + groupId + "成功"));
        }