将字符串参数传递给我启用Socket.io的Angular 2组件

时间:2017-01-20 23:38:23

标签: javascript angular typescript socket.io

我正在使用http转换为使用socket.io将数据导入我的Angular 2应用程序。在示例中,我想帮助我在组件构造函数中使用api.service的私有版本。我现在需要做的就是调用api.service中定义的“get”函数(已经设置为使用socket.io)。这就是api.service中的“get”函数的样子:

   public get(req: string, options: any, callback: IRequestCallback) {
          // go get stuff
    }

现在在我的组件中,我一直在使用看起来像这样的http get函数:

 getByCategory() {
     return this._http.get(this._url)
         .map((response:Response) => response.json())
         .catch(this._errorsHandler);
 }

现在我改为使用我的api.service中的socket.io函数。正如您在顶部的代码中看到的那样,来自api.service的套接字“get”调用需要3个参数(字符串,选项和回调)。我试过这个:

getByCategory() {
    return this.__socket.get(this._url, this.args, function(data) {
    });
}

...但现在我意识到api.service中已经提供了URL。所以让我感到尴尬的是,这听起来很愚蠢,是我可以传递的第一个参数。我尝试传入一个空字符串作为第一个参数,但这是错误的。我可以在这里传递什么字符串,而不是网址?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

首先,我对Http模块没有任何问题,所以我很好奇为什么要进行切换(不是我知道所有的用例!)

话虽如此,听起来它确实取决于socket.io如何处理底层代码 - Typescript中的可选参数(" optional")通常期望undefined作为占位符,所以你可以尝试在这种情况下传递undefined