将Socket Io添加到Angular 2中

时间:2016-07-31 22:43:01

标签: angular socket.io

好的,所以我在尝试弄清楚如何将Socket.io添加到角度2应用程序中时运气最差。

我正在使用此angular 2 expresss starter。从我看到的方式来看,我想在 typings.json

中添加这个socket.io依赖项。
{
  "globalDependencies": {
    "body-parser": "registry:dt/body-parser#0.0.0+20160619023215",
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "express": "registry:dt/express#4.0.0+20160708185218",
    "express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20160715232503",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "mime": "registry:dt/mime#0.0.0+20160316155526",
    "node": "registry:dt/node#6.0.0+20160720070758",
    "serve-favicon": "registry:dt/serve-favicon#0.0.0+20160316155526",
    "serve-static": "registry:dt/serve-static#0.0.0+20160606155157"
  },
  "dependencies": {
    "jsonwebtoken": "registry:npm/jsonwebtoken#5.5.4+20160208220328"
  }
}

他们从哪里获得这些价值?示例:"注册表:dt / express#4.0.0 + 20160708185218"

另一件事是导入部分。

import * as express from "express";
import { join } from "path";
import * as favicon from "serve-favicon";
import { json, urlencoded } from "body-parser";

我用来看

var express = require('express');
var socket_io = require('socket.io');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

那么这是正确的吗?

import * as socket_io from "socket.io";

1 个答案:

答案 0 :(得分:1)

DT = DefinitelyTyped。它是d.ts(TypeScript定义)文件的库。点击此处:https://github.com/DefinitelyTyped/DefinitelyTyped

typings.json将TypeScript定义添加到项目中,这些定义在导入非本地用TypeScript编写的包时使用(例如jQuery等JavaScript包)。

可以在此处找到打字包:https://www.npmjs.com/package/typings

如果您已全局安装“typings”包,则可以在命令行中使用“typings search packagename”搜索TypeScript定义。记下源代码,它会告诉你d.ts文件的位置。在socket.io-client的情况下,它在DT上。因此,要安装它,您需要使用以下命令:

typings install dt~socket.io-mocha --global --save

这将添加对typings.json文件的引用,然后下载d.ts

要在项目中实际使用包,您需要将其添加到package.json文件中的devDependencies。然后,您需要在项目根目录中运行命令NPM install。在此之后,您将能够将对象导入到项目中。

如果要导入特定的类/对象/ etc,可以使用: import { object_name_here } from 'package_name_here';

如果您要导入所有内容,可以使用以下内容:

import * as alias_name_here from 'package_name_here';

...然后alias_name.ojbect_name获取对您要使用的位的引用

因此,在您的情况下,您可以执行以下操作:

import * as sioc from 'socket.io-client';
let socket = sioc('serveraddress');
etc, etc...