2016-08-15 43 views
0

这是我的控制器:不能得到在不同的浏览器(听众)插座响应

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); 
     }); 

当我尝试在其他浏览器中接收到的数据不同于发出呼叫的人不会显示任何内容。我做错了什么?

+0

你的意思是你要广播(发送到所有连接客户端/浏览器)服务器发送的'stocksend'消息? – robertklep

+0

是的,尽管如此,但我只收到浏览器上的数据,我做了输入示例。我写的“示例”,并在控制台上写“示例”在其他浏览器中不显示任何东西 – jocarosa

回答

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); 
}); 
+0

非常感谢你!我非常困惑,因为我从客户端发送了socket.emit的调用,但是在服务器上,我使用的是socket.emit insted io.emit – jocarosa