如何访问网络'角度控制器中的套接字?

时间:2015-01-19 03:54:20

标签: angularjs node.js sockets controller

我试图通过一个角度控制器来访问一个套接字(现在我正在使用' net'套接字,因为它可以独立工作)。

这个想法是:我按下前端的一个按钮,它会触发一个功能,从服务器发送和接收消息到我想控制的另一个设备。

但我似乎无法将插座插入"控制器范围。

套接字本身可以正常工作

function sendCommand(command) {
console.log ("trying to connect to "+ Host +":"+ Port);
// Connect to the box:
var client =  new net.Socket();
client.connect(Port, Host, Connected);
client.on('data', InputReceived);
client.on('end', Disconnected);
client.on('error', printError);
client.write(command + '\n');  
client.end();
}

这可以很好地发送和接收消息。

但现在我想从我的角度应用程序中做同样的事情,所以我必须以某种方式将那个插座插入控制器......但我不知道如何。

我试过

.factory('Socket', function(){
var socket = require('net').socket.notify('create', true);
})

但"要求未定义" (因为它不在节点内部运行)。

如何创建一个可在控制器范围内使用的套接字(或任何其他方式来实现此目的)?

1 个答案:

答案 0 :(得分:0)

您在编写时已将套接字注册为服务,

.factory('Socket', function(){
    var socket = require('net').socket.notify('create', true);
})

现在您需要做的是将您注册的服务传递给控制器​​。 例如,如果您的模块名称是app,则可以编写,

.controller (your_ctrl_name, function (Socket) {
   //Write the functionality you want to perform inside the controller
}

现在,在此控制器块中,您可以访问之前定义的Socket。