Я использую web socket
, чтобы получить прослушиватель на нашем веб-портале.Но я не получаю слушателя через observable
.
Это мой файл ChatService.Вот мой пример кода.
Import {Injectable} from '@angular/core';
import { StorageService } from '@app/services';
import { BehaviorSubject, Observable } from 'rxjs';
import * as io from 'socket.io-client';
import { WSUrl } from './../app.constants';
@Injectable({
providedIn: 'root'
})
export class ChatService {
private url = WSUrl;
private socket;
private jobStop = new BehaviorSubject(null);
private jobStart = new BehaviorSubject(null);
private jobStatus = new BehaviorSubject(null);
private jobVerification = new BehaviorSubject(null);
public jobStop$ = this.jobStop.asObservable();
public jobStart$ = this.jobStart.asObservable();
public jobStatus$ = this.jobStatus.asObservable();
public jobVerification$ = this.jobVerification.asObservable();
constructor(private toastr: ToastrService, private storage: StorageService) {
// Get access token from local storage
const token = this.storage.getItem<string>('token');
// For socket connection
this.socket = io(this.url, {
query: 'token=' + token
});
// Socket connection successfully made
this.socket.on('connect', () => {
console.log('Connection Made.');
this.socket.emit(
'join',
{
login_token: token
},
data => {
console.log('Socket Join.');
if (data.code === 400) {
return false;
}
}
);
this.socket.on('job_status', data => {
this.jobStatus.next(data);
});
this.socket.on('start_job_hirer', data => {
this.jobStart.next(data);
});
this.socket.on('stop_job_worker', data => {
this.jobStop.next(data);
});
this.socket.on('job_verification_hirer', data => {
this.jobVerification.next(data);
});
});
}
// Track job
public trackJob(job_id) {
return Observable.create(observer => {
this.socket.emit('track_job', { job_id }, data => {
observer.next(data);
});
});
}
public stopJob(job_id) {
return Observable.create(observer => {
this.socket.emit('stop_job', { job_id: job_id }, data => {
observer.next(data);
});
});
}
// For real time location
public realTimeLocation(lat, lng) {
return Observable.create(observer => {
this.socket.emit(
'real_time_location',
{ longitude: lng, latitude: lat },
data => {
observer.next(data);
}
);
});
}
// Track user
public trackUser() {
return Observable.create(observer => {
this.socket.emit('track_user', {}, data => {
observer.next(data);
});
});
}
}
Я установил jobStop
, jobStart
, jobStatus
и jobVerification
слушатель после соединения с сокетом.
Я использую этот код для subscribe
.Вот мой пример кода.
this.chatService.jobStart$.subscribe(response => {
console.log(response);
});
То же самое для всех пусков, остановок, состояний и проверок.
Я проверил, но не смог прослушать слушателя.Пожалуйста, просмотрите мой код и помогите мне.
Спасибо заранее.