Как отправить ответ клиентам на основе пользователя в signalr
Поток приложений:
рассмотрим клиентское приложение выполняется в отдельной среде, применение веб-API выполняется в отдельной среде.
вот мой код концентратора для проекта web api :
public class NotifyHub : Hub { public NotifyHub() { var request = new PushNotificationRequest { FilterProperty = new Common.Filters.FilterProperty { Offset = 0, RecordLimit = 0, OrderBy = "datechecked desc" }, Filters = new List<Common.Filters.FilterObject> { new Common.Filters.FilterObject { LogicOperator = 0, ConditionOperator = 0, Function = 0, FieldName = "", FieldValue = "", FieldType = 0 } } }; Int16 userId = 3134; Int16 usertypeid = 1; INotificationManager inotifity = new NotificationManager(); var taskTimer = Task.Factory.StartNew(async () => { while (true) { //var serviceProxy = new NotificationServiceProxy(); var NotificationResult = inotifity.PublishResultsAsync(request, userId, usertypeid); //Sending the server time to all the connected clients on the client method SendServerTime() Clients.All.NotificationToClient(NotificationResult); //Delaying by 60 seconds. await Task.Delay(60000); } }, TaskCreationOptions.LongRunning ); } }
из приведенного выше кода Вы можете видеть ,
Int16 userId = 3134;
На самом деле она должна быть динамичной. В клиентском приложении, если userid 3134 вошел в систему, я должен отправить ответные данные, которые принадлежат 3134.
ответ должен быть соответствующим зарегистрированному пользователю в клиентском приложении.
как я могу этого достичь?
Код клиентского приложения для подключения концентратора:
var app = angular.module('app', []); app.value('$', $); app.factory('NotificationService', function ($, $rootScope) { return { proxy: null, initialize: function (NotificationToClientCallback) { //Getting the connection object var connection = $.hubConnection("http://localhost:50728/"); //Creating proxy this.proxy = connection.createHubProxy('NotifyHub'); //Attaching a callback to handle NotificationToClient client call this.proxy.on('NotificationToClient', function (message) { $rootScope.$apply(function () { NotificationToClientCallback(message); }); }); //Starting connection connection.start({ jsonp: true }) .done(function () { console.log('Now connected, connection ID=' + connection.id); }) .fail(function () { console.log('Could not connect'); }); }, sendRequest: function (callback) { //Invoking SendNoficationRequest method defined in hub this.proxy.invoke('SendNoficationRequest'); } } }).controller('NotificationCtrl', ['$scope', 'NotificationService', function NotificationCtrl($scope, NotificationService) { $scope.text = ""; $scope.SendNoficationRequest = function () { NotificationService.sendRequest(); } updateDisplayData = function (text) { $scope.text = text; } NotificationService.initialize(updateDisplayData); }]);
Что я уже пробовал:
Я искал о том, как передать параметры для хаба, но я не могу двигаться дальше.