mirror of
https://github.com/chsakell/aspnet-core-signalr-angular.git
synced 2025-12-22 17:27:48 +00:00
set connection id on start
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
<match [match]="match" (updateSubscription)="updateSubscription($event)"></match>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<chat [matches]="matches"></chat>
|
||||
<chat [matches]="matches" [connection]="connectionId"></chat>
|
||||
</div>
|
||||
</div>
|
||||
@@ -12,6 +12,7 @@ import { SignalRConnectionStatus } from '../shared/interfaces';
|
||||
export class HomeComponent implements OnInit {
|
||||
|
||||
matches: Match[];
|
||||
connectionId: string;
|
||||
error: any;
|
||||
|
||||
constructor(private dataService: DataService,
|
||||
@@ -20,6 +21,8 @@ export class HomeComponent implements OnInit {
|
||||
ngOnInit() {
|
||||
let self = this;
|
||||
|
||||
self.listenForConnection();
|
||||
|
||||
self.feedService.connectionState
|
||||
.subscribe(
|
||||
connectionState => {
|
||||
@@ -60,7 +63,6 @@ export class HomeComponent implements OnInit {
|
||||
for (var i = 0; i < self.matches.length; i++) {
|
||||
if (self.matches[i].Id === feed.MatchId) {
|
||||
if (!self.matches[i].Feeds) {
|
||||
console.log('initializing for match ' + self.matches[i].Id);
|
||||
self.matches[i].Feeds = new Array<Feed>();
|
||||
}
|
||||
self.matches[i].Feeds.unshift(feed);
|
||||
@@ -74,8 +76,19 @@ export class HomeComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
listenForConnection() {
|
||||
let self = this;
|
||||
// Listen for connected / disconnected events
|
||||
self.feedService.setConnectionId.subscribe(
|
||||
id => {
|
||||
console.log(id);
|
||||
self.connectionId = id;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
updateSubscription(subscription: any) {
|
||||
if(<boolean>subscription.subscribe === true)
|
||||
if (<boolean>subscription.subscribe === true)
|
||||
this.feedService.subscribeToFeed(<number>subscription.matchId);
|
||||
else
|
||||
this.feedService.unsubscribeFromFeed(<number>subscription.matchId);
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
<td><span class="teamName">{{match.Id}}</span></td>
|
||||
<td><span class="teamScore"> {{match.Host}} vs {{match.Guest}} </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span class="match-th">{{connection}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="chat-table">
|
||||
|
||||
@@ -10,6 +10,7 @@ import { FeedService } from '../services/feed.service';
|
||||
export class ChatComponent implements OnInit {
|
||||
|
||||
@Input() matches: Match[];
|
||||
@Input() connection: string;
|
||||
messages: ChatMessage[];
|
||||
|
||||
constructor(private feedService: FeedService) { }
|
||||
|
||||
@@ -9,7 +9,7 @@ export interface FeedProxy {
|
||||
}
|
||||
|
||||
export interface FeedClient {
|
||||
userConnected: (user: any) => void;
|
||||
setConnectionId: (id: string) => void;
|
||||
userDisconnected: (id: string) => void;
|
||||
|
||||
updateMatch: (match: Match) => void;
|
||||
|
||||
@@ -13,14 +13,14 @@ export class FeedService {
|
||||
currentState = SignalRConnectionStatus.Disconnected;
|
||||
connectionState: Observable<SignalRConnectionStatus>;
|
||||
|
||||
userConnected: Observable<any>;
|
||||
setConnectionId: Observable<string>;
|
||||
updateMatch: Observable<Match>;
|
||||
addFeed: Observable<Feed>;
|
||||
addChatMessage: Observable<ChatMessage>;
|
||||
|
||||
private connectionStateSubject = new Subject<SignalRConnectionStatus>();
|
||||
private userConnectedSubject = new Subject<any>();
|
||||
|
||||
|
||||
private setConnectionIdSubject = new Subject<string>();
|
||||
private updateMatchSubject = new Subject<Match>();
|
||||
private addFeedSubject = new Subject<Feed>();
|
||||
private addChatMessageSubject = new Subject<ChatMessage>();
|
||||
@@ -30,7 +30,7 @@ export class FeedService {
|
||||
constructor(private http: Http) {
|
||||
this.connectionState = this.connectionStateSubject.asObservable();
|
||||
|
||||
this.userConnected = this.userConnectedSubject.asObservable();
|
||||
this.setConnectionId = this.setConnectionIdSubject.asObservable();
|
||||
this.updateMatch = this.updateMatchSubject.asObservable();
|
||||
this.addFeed = this.addFeedSubject.asObservable();
|
||||
this.addChatMessage = this.addChatMessageSubject.asObservable();
|
||||
@@ -48,7 +48,7 @@ export class FeedService {
|
||||
* @desc callback when a new user connect to the chat
|
||||
* @param User user, the connected user
|
||||
*/
|
||||
feedHub.client.userConnected = user => this.onUserConnected(user);
|
||||
feedHub.client.setConnectionId = id => this.onSetConnectionId(id);
|
||||
|
||||
/**
|
||||
* @desc callback when match score is updated
|
||||
@@ -77,8 +77,8 @@ export class FeedService {
|
||||
}
|
||||
|
||||
// Client side methods
|
||||
private onUserConnected(user: any) {
|
||||
this.userConnectedSubject.next(user);
|
||||
private onSetConnectionId(id: string) {
|
||||
this.setConnectionIdSubject.next(id);
|
||||
}
|
||||
|
||||
private onUpdateMatch(match: Match) {
|
||||
|
||||
Reference in New Issue
Block a user