0
我遇到以下问题:我尝试使用sockets.io模块发送由AMI(asterisk.io)收集的数据,但我无法打印它在html文件中。在下面的代码中,这个想法是当数据进入时在控制台上显示它。我真的不知道如何使这项工作,任何人都可以帮助我?谢谢!使用node.js和socket.io发送异步信息
HTML文件:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('data', function(data){
console.log(data);
});
</script>
asterisk.io与socket.io文件:
var socket = require('../app');
require('events').EventEmitter.prototype._maxListeners = 1000;
var aio = require('asterisk.io');
var io = socket.io;
var ami = null;
ami = aio.ami(
'192.168.0.7',
5038,
'admin',
'admin'
);
ami.on('error', function(err){
throw err;
});
io.on('connection', function(socket){
ami.on('ready', function(){
ami.action('SIPpeers', {}, function(data){
ami.on('eventPeerEntry', function(data){
socket.on('data', function(data){
io.emit('data', data);
});
});
});
});
});
我app.js文件:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var http = require('http').Server(app);
var cookieParser = require('cookie-parser');
var session = require('express-session');
var io = require('socket.io')(http);
exports.io = io;
(...)
//Execute main
http.listen(7777, function(){
console.log("Running...");
});
[编辑] 后在Vaterrenanburg的帮助下,这是正确的代码:
asterisk.io
io.on('connection', function (socket) {
ami.action('SIPpeers', {}, function(data){
ami.on('eventPeerEntry', function(data){
socket.emit("peer", data);
});
});
});
HTML文件:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('peer', function (data) {
(...)
console.log(data);
});
</script>
谢谢。你是对的!我必须改变前端,以便它可以接收。所以我不得不在服务器代码中做一些小的改变来发送数据。 – SlowHusky
我很高兴我的文章帮助您找到解决方案!如果有答案回答你的问题,这个网站的工作方式,你会“接受”的答案,更在这里:[我应该做什么当有人回答我的问题?](http://stackoverflow.com/帮助/人,答案)。但前提是你的问题确实得到了回答。如果不是,请考虑在问题中添加更多详细信息。我会在你的问题上留下这个评论,但我还没有足够的声望。 – Vaterrenanburg