我不熟悉Node.js和Angular,我要用我的问题来证明这一点。
在我所使用的角度教程中,我看到了用一个角“服务”实现的“后端”部分,它是通过例如"ng c‘s myservice“创建的,其中myservice变成了一个可注入的,被添加到应用程序的提供者列表中。我看到的大多数示例要么使用本地测试数据存根来实现该服务,要么通过http请求实现类似Mongo数据库的内容。
然而,我的(角)应用程序需要连接到后端的TCP服务器.使用http协议不是一个选项。
我第一次尝试的是socket.io-client,结果发现它只是http。然后,我尝试了node.js的Net类,如下所示(在给定端口上侦听一个简单的TCP服务):
import { Injectable } from '@angular/core';
@Injectable()
export class RemoteService {
net = require('net');
client;
serverStatus: string = 'Unknown';
PORT: number = 51101;
IP = '127.0.0.1';
constructor() {
console.log('Initializing remote client. Calling ' + this.IP + ':' + this.PORT + ' ...');
this.client = this.net.createConnection({ port: this.PORT }, { host : this.IP }, () => {
console.log('Connected to server!!!');
});
}
}
..。但是,这会导致浏览器控制台中的错误:
错误TypeError: this.net.createConnection不是一个函数
当我研究这个特定的错误时,常见的解释(简称)是“您不能在浏览器中这样做。”(举个例子这里.)
我确实感到为什么你不能做TCP或UDP或类似的“浏览器”。我不明白的是,作为我的后端的那部分如何被称为“浏览器”。有人能帮我澄清一下吗?(我是否误解了角能做什么?)
在角服务中使用Node.js的Net类是完全可能的吗?如果可能,如何使用?
发布于 2017-10-24 18:48:25
如果像这样设置后端,可以使用NG2套接字模块客户端与服务器进行通信。https://www.npmjs.com/package/ng2-socket-io
var net = require("net");
var tcpServer = net.createServer();
var datas = [];
var sockets = [];
tcpServer.on('connection', function(socket){
console.log('connection established');
sockets.push(socket);
socket.setEncoding('utf8');
socket.on('data', function(data){
console.log(data);
});
});
tcpServer.listen(3333, '127.0.0.1');
https://stackoverflow.com/questions/46916661
复制相似问题