有角后端服务呼叫,无休息呼叫

时间:2018-10-08 05:13:14

标签: angular angular-services

是否可以在没有REST特定方式的情况下从角度4调用后端服务?

我想实现GUI,但是使用REST是受限制的,所以我想以其他方式调用服务。

简而言之,我想创建一个传统的MVC项目,其中Angular是VIEW。剩下的事情将像在传统框架中一样保留。

1 个答案:

答案 0 :(得分:1)

您可以使用 WebSockets 与角度应用程序的后端进行通信。

WebSocket是与HTTP不同的协议,它使Web客户端(例如浏览器)和Web服务器之间的交互开销更低。如果使用TLS加密的连接,则通过TCP端口80或443进行通信。

服务示例:Real Time Apps with TypeScript: Integrating Web Sockets, Node & Angular

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

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('message', message);
    }

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

    public onEvent(event: Event): Observable<any> {
        return new Observable<Event>(observer => {
            this.socket.on(event, () => observer.next());
        });
    }
}