/// <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)); }
/// <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 + " 上线啦")); }
/// <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)); }
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)); }
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(); }
/// <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("链接成功,这里可以处理对方是否在线或者历史记录等。。。。"); }
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); }
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); } }
/// <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 + "成功")); }