I am trying to send messages to WebSocket on TypeScript. I created a Socket service with two functions: .onMessage () and .emit (message):
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Message } from '../message/message.model';
import * as socketIo from 'socket.io-client';
const SERVER_URL = 'http://localhost:8080';
@Injectable()
export class SocketService {
private socket;
public initSocket(): void {
this.socket = socketIo(SERVER_URL);
}
public send(message?: Message): void {
this.socket.emit('displayHello', { to: 'flo@NXS_DEV_FLO2', from: 'flo@NXS_DEV_FLO2', name: 'displayHello'})
}
public onMessage(): Observable<any> {
return new Observable(observer => {
this.socket.on('message', (data) => {
observer.next(data);
});
});
}
}
The My.onMessage function does not display any errors. Although my .emit (message) function displays this as an error:
ERROR TypeError: Cannot read property 'emit' of undefined
How to do it?
/////////////// EDIT ///////////////////
I call my functions as follows:
addNewMessage(newMessage: Message): void {
this.socketService.initSocket();
this.socketService.onMessage();
this.socketService.send(newMessage);
}
///////////// EDIT 2 ////////////////////
When I test this on my console, it works:
public onMessage(): Observable<any> {
return new Observable(observer => {
this.socket.on('displayHello', function(data) {
$.pnotify({
title: 'Hello',
text: data.from + ' te dis bonjour ' + data.to,
type: 'info'
});
});
}
But I have this error when I tried to insert my code:
Property 'pnotify' does not exist on type '(search: string) => ElementFinder'
source
share