Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node.js和socket.io发送异步信息_Javascript_Node.js_Sockets - Fatal编程技术网

Javascript 使用node.js和socket.io发送异步信息

Javascript 使用node.js和socket.io发送异步信息,javascript,node.js,sockets,Javascript,Node.js,Sockets,我有以下问题:我试图使用sockets.io模块发送AMI(asterisk.io)收集的数据,但在html文件中打印它时遇到困难。在下面的代码中,我们的想法是在数据输入时在控制台上显示它。我真的不知道该怎么做,有人能帮我吗?谢谢大家! html文件: <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); socket.on('data', functio

我有以下问题:我试图使用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>
<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect('http://localhost');
    socket.on('peer', function (data) {
        (...)
        console.log(data);
    });
</script>
我的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...");
});
[编辑] 在Vaterrenaburg的帮助下,这是正确的代码:

星号

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();
  socket.on('data', function(data){
    console.log(data);
  });
</script>
<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect('http://localhost');
    socket.on('peer', function (data) {
        (...)
        console.log(data);
    });
</script>

var socket=io.connect('http://localhost');
socket.on('peer',函数(数据){
(...)
控制台日志(数据);
});

目前,您已将其设置为仅当客户端发出
数据
事件时,服务器才会发出
数据
事件。根据您的描述,我相信您希望服务器在ami
eventPeerEntry
事件上向客户端发出
data
事件。要执行此操作,请在服务器上删除对
数据
事件的订阅

io.on('connection', function(socket){
  ami.on('ready', function(){
    ami.action('SIPpeers', {}, function(data){
      ami.on('eventPeerEntry', function(data){
        io.emit('data', data);
      });
    });
  });
});

非常感谢。你是对的!我不得不改变前端,这样它就可以接收信号了。所以我不得不在服务器代码中做一些小改动来发送数据。我很高兴我的帖子帮助你找到了解决方案!如果有一个答案可以回答你的问题,这个网站的工作方式,你会“接受”这个答案,更多信息如下:。但前提是你的问题真的得到了回答。如果没有,考虑在问题中添加更多的细节。我想就你的问题留下这个评论,但我还没有足够的声誉。