我正在与Asterisk ARI Node.js client合作,并且想听某些事件,然后执行一个操作。根据我的理解,连接到服务器后,您可以为通过WebSockets发布以执行任务的事件设置几种不同类型的事件侦听器。在下面的代码中,即使我触发了这些特定事件,我也没有收到任何输出,并且可以通过WSCat连接并观看事件流。
我正在构建的应用程序应该只监听发生的事件并更新数据库。我将永远不需要通过HTTP请求访问Node应用程序,这就是为什么我在对服务器的每个请求上都返回禁止的原因。我的最终目标是让这个应用程序坐在对事件做出反应的服务器上。
'use strict';
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const client = require('ari-client');
const util = require('util');
const server = http.createServer((req, res) => {
res.statusCode = 403;
res.end('FORBIDDEN');
});
server.listen(port, hostname, () => {
client.connect('http://127.0.0.1:8088', 'username', 'password')
.then(function(ari) {
ari.on('DeviceStateChanged', function(event) {
console.log(event);
})
ari.on('ChannelCreated', function(event) {
console.log(event);
})
ari.on('BridgeCreated', function(event) {
console.log(event);
})
ari.on('StasisStart', function(event) {
console.log(event);
})
ari.on('PeerStatusChange', function(event) {
console.log('blah', event);
})
ari.on('Dial', function(event) {
console.log('Dial', event);
})
})
.catch(function(err) {
console.log(err);
})
});
答案 0 :(得分:0)
为什么要创建服务器?您可以测试以下内容。
'use strict';
const client = require('ari-client');
const util = require('util');
client.connect('http://127.0.0.1:8088', 'username', 'password')
.then(function(ari) {
ari.on('DeviceStateChanged', function(event) {
console.log(event);
})
ari.on('ChannelCreated', function(event) {
console.log(event);
})
ari.on('BridgeCreated', function(event) {
console.log(event);
})
ari.on('StasisStart', function(event) {
console.log(event);
})
ari.on('PeerStatusChange', function(event) {
console.log('blah', event);
})
ari.on('Dial', function(event) {
console.log('Dial', event);
})
})
.catch(function(err) {
console.log(err);
});