/ / Conecte ao socket usando socket.io com angular 5 - angular, socket.io

Conecte ao soquete usando o socket.io com angular 5 - angular, socket.io

Eu tenho servidor de soquete .net, conecto com sucesso usando socket.io com angular ..mas não consigo encontrar como enviar dados ao servidor e receber dele .. alguém pode me ajudar

Respostas:

2 para resposta № 1

Trabalhar com Observables e escreva um serviço Angular com métodos para listen e send mensagens para o servidor:

import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Observable";
import { Observer } from "rxjs/Observer";
import { Message } from "../model/message";

import * as socketIo from "socket.io-client";

const SERVER_URL = "https://yourserverhost.com/";

@Injectable()
export class SocketService {
private socket;

public initSocket(): void {
this.socket = socketIo(SERVER_URL);
}

public send(message: Message): void {
this.socket.emit("message", message);
}

public onMessage(): Observable<Message> {
return new Observable<Message>(observer => {
this.socket.on("message", (data: Message) => observer.next(data));
});
}
}

Encontre um aplicativo completo usando WebSockets, Node.js e Angular escritos inteiramente em TypeScript aqui: https://github.com/luixaviles/socket-io-typescript-chat

Espero que ajude.


0 para resposta № 2

Para enviar dados para o servidor, você deve usar o soquete.emitir() funcionar algo como isto:

io.on("connection", function(socket){
socket.emit("server method", dataToSend);
});

Para receber dados do servidor, você deve ouvir as funções do servidor. Para este efeito existe socket.em() método:

.on("connection", function(socket){
socket.on("server method", function(msg){
console.log("message: " + msg);
});
});

Você pode ler mais sobre como emitir e receber dados: https://socket.io/get-started/chat/

Aqui estão alguns links usando socket.io com projeto angular: https://medium.com/@vipinswarnkar1989/socket-io-in-mean-angular4-todo-app-29af9683957f https://tutorialedge.net/typescript/angular/angular-socket-io-tutorial/


0 para resposta № 3

Eu também precisava disso, e a API socket.io-client não se encaixa muito bem em um aplicativo angular e deve ser empacotada com rxjs, IMHO.

É por isso que eu criei uma biblioteca de invólucros muito pequena.

https://github.com/harunurhan/rx-socket.io-client

Você pode usá-lo como abaixo:

const socket = new RxSocket("/url/to/socket.io/server");

const event$ = socket.subject("event_name"); // get rxjs/Subject for a specific event

event$.subscribe((data) => { // read data
console.log(data.foo)
});

event$.next({foo: "bar"}); // send data

// create observables for events that you want to only listen (receive data)
const event$ = socket.observable("event_name"); // get rxjs/Observable for a specific event

event$.subscribe((data) => { // read data
console.log(data.foo)
});