将Socket Io添加到Angular 2中

问题描述:

好吧,我在试图弄清楚如何将Socket.io添加到角度为2的应用程序时遇到了最糟糕的运气。将Socket Io添加到Angular 2中

我使用的是这个angular 2 expresss starter。从我看到它的方式,我想补充内typings.json

{ 
    "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" 
    } 
} 

他们从哪儿来获得这些值这个socket.io依赖?示例:“注册表: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"; 

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

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

的分型包可以在这里找到:https://www.npmjs.com/package/typings

如果已在全球安装了“分型”套餐,您将可以通过在命令行中使用“分型搜索软件包名”来搜索打字稿定义。记下源代码,它会告诉你d.ts文件在哪里。在socket.io-client的情况下,它在DT上。因此,要安装它,您需要使用下面的命令:

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

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

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

如果要导入特定的类/对象/等你可以使用:如果要导入的一切 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... 
+0

对不起,我仍然有点卡住T.T我仍然无法在typings.json中添加socket.io。我输入“typings search socket.io”并获得源主页列表。接下来我该怎么做? –

+0

我想写一些cli来添加我的套接字注册表里面的json文件? –

+0

更新了我的答案。搜索后,您需要安装。这会将它添加到你的类型文件中,并下载相关的d.ts.往上看。希望这可以帮助 – Delosdos