Попробуйте позвонить в Clients.Caller, но он не работает - PullRequest
0 голосов
/ 20 сентября 2018

Здравствуйте. Я пытаюсь перехватить сообщения из базы данных и передать их вызывающей стороне, но когда я использовал метод Clients.Caller, он передает мне сообщение об ошибке, например

Использование экземпляра концентратора, не созданного HubPipeline, не поддерживается

Если я использую

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.receiver(respose);

, то он ничего не отвечает.Поэтому, пожалуйста, помогите мне решить этот вопрос.

, и я использую следующий код:

public async Task GetAllMessages(int roomid, int fromuserId, int touserId, int index, int pageSize, int broadcastid = 0)
{
        ResponseModel respose = new ResponseModel();

        try
        {
            var model = new MessageDetailModel
            {
                Index = index,
                PageSize = pageSize,
                FromUserId = fromuserId,
                ToUserId = touserId,
                ChatRoomId = roomid,
                BroadCastId = broadcastid
            };

            MesaageModel totalmessages = new MesaageModel();
            List<RecentMessage> messages = new List<RecentMessage>();

            var usermessages = await _userService.GetAllMessages(model);
            messages.AddRange(usermessages);

            foreach (var message in messages)
            {
                model.BroadCastMessageId = model.BroadCastId == 0 ? 0 : message.BroadCastMessageId;
                model.ChatRoomMessageId = model.BroadCastId == 0 ? message.ChatRoomMessageId : 0;
                List<UserDetail> userofseenby = new List<UserDetail>();
                var users = await _userService.GetMessageSeenBy(model);
                userofseenby.AddRange(users);
                message.SeenBy = userofseenby;
            }

            //totalmessages.Messages.AddRange(messages);
            totalmessages.Messages = messages;

            totalmessages.UnseenMessageCount = await _userService.GetUnSeenCount(messages.FirstOrDefault().ChatRoomId, fromuserId);

            if (messages.FirstOrDefault().IsBroadCast == true)
                totalmessages.Users = (List<UserDetail>)await _userService.GetUsersByBroadCastId(messages.FirstOrDefault().BroadCastId);
            else if (messages.FirstOrDefault().IsGroup == true)
                totalmessages.Users = (List<UserDetail>)await _userService.GetUsersByChatRoomId((int)messages.FirstOrDefault().ChatRoomId);

            respose = ResponseHelper.SuccessResponse("onAllMessagesReceived", totalmessages);

            Clients.Caller.receiver(respose); // Error catch here
        }
        catch (Exception ex)
        {
            respose.ActionCommand = "onAllMessagesReceived";
            respose = ResponseHelper.ErrorResponse(respose.ActionCommand, ex.ToString());
            Clients.Caller.receiver(respose);
        }
 }

И конструкторы класса ниже:

 public ChatHub()
    {
        _userService = new UserBusinessLogic();
        _chatterService = new ChatterBusinessLogic();
    }

    public ChatHub(IChatterBusinessLogic chatterService, IUserBusinessLogic userService)
    {
        _chatterService = chatterService;
        _userService = userService;
    }

И контроллерКонструктор выглядит так:

  public ChatterController()
    {
        _userService = new UserBusinessLogic();
        _chatterService = new ChatterBusinessLogic();
    }

    public ChatterController(IChatterBusinessLogic chatterService, IUserBusinessLogic userService)
    {
        _chatterService = chatterService;
        _userService = userService;
    }
...