簡體   English   中英

使用node.js和socket.io發送異步信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM