[英]Sending asynchronous information with node.js and socket.io
我有以下問題:我正在嘗試使用sockets.io模塊發送AMI(asterisk.io)收集的數據,但是我很難將其打印在html文件中。 在下面的代碼中,想法是在數據輸入時將其顯示在控制台上。我真的不知道如何使這項工作有效,有人可以幫助我嗎? 謝謝!
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...");
});
[EDIT]在Vaterrenanburg的幫助下,這是正確的代碼:
星號
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>
當前,您已經對其進行了設置,以便服務器僅在客戶端發出data
事件時才發出data
事件。 我相信根據您的描述,您希望服務器在ami eventPeerEntry
事件上向客戶端發出data
事件。 為此,請刪除服務器上data
事件的預訂。
io.on('connection', function(socket){
ami.on('ready', function(){
ami.action('SIPpeers', {}, function(data){
ami.on('eventPeerEntry', function(data){
io.emit('data', data);
});
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.