无法在不同的浏览器中获得套接字响应(侦听器)

时间:2016-08-15 17:58:32

标签: sockets express

这是我的控制者:

this.servindexfile=function(req,res){

        res.sendFile(path+'/public/index.html');    

    }; 

        io.on('connection', function(socket){  

            console.log('conectado');

            socket.on("stocksend", function(stockTitle){

                socket.emit("stocksend",stockTitle);
            });
        });

这是我的客户端html文件:

<head> <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>  </head>

app.controller("LineCtrl", function ($scope,$http) {

    var socket = io();

    $scope.fnadd=function(){

      var inputStock = $scope.newstock;

      if (inputStock!=""){
        socket.emit('stocksend',inputStock);//emit new stock
      }
    };

     socket.on("stocksend",function(dataReceived){

        console.log(dataReceived);
      }); 

当我尝试查看在其他浏览器中收到的数据与发出呼叫的浏览器不同时,这并不显示任何内容。我做错了什么?

1 个答案:

答案 0 :(得分:0)

socket.emit()会向一个客户端发送消息(在您的情况下,是原始客户端/浏览器)。

如果要向所有已连接的客户端发送消息,则应使用io.emit()

socket.on("stocksend", function(stockTitle) {
  io.emit("stocksend", stockTitle);
});

这也会将消息发送到代表socket的客户端(发送stocksend消息的客户端)。如果您不想要,但想要向所有已连接的客户广播消息,发送消息的客户,请使用socket.broadcast.emit()

socket.on("stocksend", function(stockTitle) {
  socket.broadcast.emit("stocksend", stockTitle);
});