AngularJS2和Socket.io,这种方法是否需要改进?

AngularJS2和Socket.io,这种方法是否需要改进?,socket.io,angular,Socket.io,Angular,在my index.html中,我插入了Socket.io脚本: <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> 我在“ngAfterContentInit”中输入了正在侦听的事件服务器。这段代码对我来说非常有效,但你认为这是最好的方法吗?考虑到可用的生命周期挂钩,我认为这是有意义的。在加载内容之前,不需要与i/o服务器进行通信,那么为什么要在加载之前进行通信呢?它工作得很好,但如果有其他

在my index.html中,我插入了Socket.io脚本:

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

我在“ngAfterContentInit”中输入了正在侦听的事件服务器。这段代码对我来说非常有效,但你认为这是最好的方法吗?

考虑到可用的生命周期挂钩,我认为这是有意义的。在加载内容之前,不需要与
i/o
服务器进行通信,那么为什么要在加载之前进行通信呢?它工作得很好,但如果有其他更有趣的方式,通常应用程序逻辑(连接、侦听socket.io)应该存在于一个单例服务(@Injectable())中,您可以将其导入其他组件。然后,您应该在内部有一些init函数,在初始化所有的child之后,您将从根组件调用该函数。我认为这比在组件中包含逻辑要好。然后您可以使用@injectprovide插入singleton服务的不同实现(用于测试或不同的套接字库等),我认为考虑到可用的生命周期挂钩,这是有意义的。在加载内容之前,不需要与
i/o
服务器进行通信,那么为什么要在加载之前进行通信呢?它工作得很好,但如果有其他更有趣的方式,通常应用程序逻辑(连接、侦听socket.io)应该存在于一个单例服务(@Injectable())中,您可以将其导入其他组件。然后,您应该在内部有一些init函数,在初始化所有的child之后,您将从根组件调用该函数。我认为这比在组件中包含逻辑要好。然后,您可以使用@injectprovide插入singleton服务的不同实现(用于测试或不同的套接字库等)
import {Component, OnInit, AfterContentInit} from 'angular2/core';
@Component({
  selector: '[cssEditor]',
  templateUrl: '/app/cssEditor/cssEditor.html'
})

export class cssEditor {
  cssData = {
    'body-bg':'#fff',
    'text-color':'#000'
  };

  ngAfterContentInit() {
    // for emit to the server
    this.socket.on('connect', () =>
      this.socket.emit('myCssData',this.cssData);
    );
    // for listening to the server
    this.socket.on('recordOK', (data) =>
      console.log(data);
    );
  }

  ngOnInit() {
    this.socket = io('http://localhost:2000');
  }
}