无法从我的 Angular2 应用程序中连接到我的 WebSocket
Can't connect to my WebSocket from within my Angular2 app
Hej 那里。
我有一个使用Node.js/Electron/Angular2(TypeScript)的应用程序。使用 socket.io 我创建了一个WebSocket。一切正常,只要我不在我的 Angular2 应用程序中。
我尝试了一整天来运行它,但没有运气。我下载了一个工作教程,但找不到缺少的链接。快把我逼疯了!
- 这是我的电子.js启动应用程序,创建websocket服务器端
- 这是我的索引.html带有工作 websocket,但作为本机 JavaScript 代码
- 这是我的 Angular2 根组件,试图让 websocket 运行
错误 - wich 不会停止编译 - 我得到,是root.component.ts(14,17): error TS2304: Cannot find name 'io'.
.
我怎样才能摆脱这个错误?或者更好:在 Angular2 中,这种 websocket 通信的最佳实践是什么?
提前谢谢。
现在我以这种方式解决了这个问题:
- 已安装的 socket.io 客户端键入
$ tsd install socket.io-client
和 - 添加了对我的 main.ts 文件
///<reference path="../../typings/socket.io-client/socket.io-client.d.ts"/>
的键入引用。 - 已安装 socket.io 客户端节点.js模块
$ npm install --save socket.io-client
和 - 将此模块添加到我的索引中.html
<script src="../node_modules/socket.io-client/socket.io.js"></script>
现在我可以简单地使用任何 Angular2 组件中的套接字,而无需添加任何额外的行。
socket = null;
constructor() {
this.socket = io('http://localhost:8181');
this.socket.on('news', function (data) {
console.log(data);
});
}
作为参考,这是我的主 Electron .js 文件中的服务器套接字代码:
var server = require('http').createServer(function(req, res) {})
socket = require('socket.io')(server, {});
server.listen(8181);
socket.on('connection', function(socket) {
socket.emit('news', {hello: 'world'});
socket.on('my other event', function(data) {
console.log(data);
});
});
希望这对以后的任何人有所帮助。感谢Thierry Templier和dvlsg的帮助。
我会指出,如果你使用电子,你不应该真正考虑电子.js是服务器端。它更像是一个客户端启动器/引导程序,并且必须在每个客户端上运行。你必须有一个单独的节点应用程序(我强烈建议它,在socket.io
的情况下)才能真正让你的代码服务器端。
至于您的问题,您可以尝试在根组件中添加import io from 'socket.io-client'
或var io = require('socket.io-client')
(如有必要,在npm install socket.io-client
之后)。
使用以下命令安装 socket.io 类型(请参阅此链接:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/socket.io/socket.io.d.ts):
$ tsd install socket.io
然后你需要导入它:
import * as io from 'socket.io';
- 连接变量,在我的情况下背景样式损坏
- 我应该连接/缩小已经缩小的JS/CSS吗?如果是,如何
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 如何将我的Ionic应用程序与我的java服务器(Spring MVC)连接
- 我的 base64 连接字符串有 = 字符.如何摆脱它们
- 如何将相同的MySQL连接用于我的整个Node.js应用程序
- 如何使用socket IO检查有多少参与者连接到我的聊天室
- 如何将sql服务器连接到我的Javascript游戏
- 我需要在停止后断开振荡器AudioNode的连接吗
- 为什么可以't我得到连接客户端's的ip地址在我的服务器上运行Node.js+Openshift托管的W
- 将.schie Javascript函数连接到我的HTML时出现问题
- 从我的web应用程序连接到本地sqlexpress数据库
- Facebook已连接但我的用户是一个空对象
- 我如何通过JavaScript连接到我的PHP程序所在的服务器
- 无法从我的 Angular2 应用程序中连接到我的 WebSocket
- 将我的整个应用程序连接成一个 HTML、JS 和 CSS 文件
- 防止与我的 Web 应用程序建立多个连接
- 节点.js将我的模块连接在一起而不会变得一团糟
- 使用 strophe attach() 而不是 connect() 不起作用,除非我两次触发我的连接回调
- 如何防止我永远的框架关闭对我的连接