angular 4/socket.io 访问全局变量和函数调用

Posted

技术标签:

【中文标题】angular 4/socket.io 访问全局变量和函数调用【英文标题】:angular 4/socket.io access global variables and function calling 【发布时间】:2018-08-31 09:51:25 【问题描述】:

对于 Angular 4 前端,我必须使用简单的套接字客户端。当我接收到 socket.on 的数据时,无法将该数据分配给全局变量并且无法调用 socket.on 内的任何函数。

public sessionId;

constructor()

var socket = io.connect('http://**.***.***.***:****');

socket.on('connect', function (data) 
  console.log('user connected');
  socket.emit('add user',  userId: uid );
);

socket.on('create channel', function (data) 

  console.log(data);
  this.sessionId = data.sessionId;    //error
  this.function();                    //error

  socket.emit('feedback',  received: true );
);



function()

【问题讨论】:

【参考方案1】:

就我而言,我创建了新的 Observable 并处理套接字事件。和一个模块订阅该可观察和调用函数。

代码是这样的:

  getSocketEvent()

    let observable = new Observable(observer => 
      this.socket.on('event', (data) => 
        observer.next(data);
      );
      return () => 
        // this.socket.disconnect();
      ;
    );
    return observable;
  


  initService()

    this.getSocketEvent().subscribe(data => 
      console.log('socket data :',data);

      //do something HERE
    );
  

【讨论】:

以上是关于angular 4/socket.io 访问全局变量和函数调用的主要内容,如果未能解决你的问题,请参考以下文章

从 Angular 表达式访问窗口

使用 @types/angular 作为全局

Ionic 2 / Angular 2 中的全局函数

如何在 ionic 2 应用程序中访问角度全局?

如何在 Angular 2 / Typescript 中声明全局变量? [关闭]

Linux编程 11(shell全局环境变量与局变环境变量)