使用带有角度5的socket.io连接到套接字

时间:2017-12-20 18:51:26

标签: angular socket.io

我有.net套接字服务器,我使用带有角度的socket.io成功连接到它。但我找不到如何将数据发送到服务器并从中接收..可以任何人帮助我

3 个答案:

答案 0 :(得分:2)

使用Observables并使用方法向服务器编写带有listensend消息的方法的Angular服务:

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));
            });
        }
    }

使用完全使用TypeScript编写的WebSockets,Node.js和Angular查找完整的应用程序:https://github.com/luixaviles/socket-io-typescript-chat

我希望它有所帮助。

答案 1 :(得分:1)

要将数据发送到服务器,您应该使用socket。 emit()这样的函数:

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

要从服务器接收数据,您应该收听服务器功能。出于此目的,存在socket。 on()方法:

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

您可以阅读有关发送和接收数据的更多信息: https://socket.io/get-started/chat/

以下是使用socket.io和angular项目的一些链接: https://medium.com/@vipinswarnkar1989/socket-io-in-mean-angular4-todo-app-29af9683957f https://tutorialedge.net/typescript/angular/angular-socket-io-tutorial/

答案 2 :(得分:0)

我也需要这个,并且socket.io-client API在角应用程序中不太适合,它应该用rxjs包裹,恕我直言。

这就是我创建一个非常小的包装库的原因。

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

您可以像下面这样使用它:

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)
});