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 № 1Trabalhar 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)
});