Express - Socket.io连接无法正常工作

时间:2016-10-26 17:24:07

标签: javascript express socket.io

我是expressangularjs的初学者。 我有一个express服务器,我希望我的Web客户端连接到: 这是代码:

// app.js
var express = require('express');  
var app = express();  
var server = require('http').createServer(app);  
var io = require('socket.io')(server);


var port = 4000;

app.use(express.static('.'));


app.get('/', function (req, res) {
  res.sendFile( './index.html');
});

io.on('connection', function(client) {  
  console.log('Client connected...');

  client.on('join', function(data) {
    console.log(data);
  });

  client.on('join', function(data) {
    console.log(data);
    client.emit('messages', 'Hello from server');
  });


});

server.listen(port, '0.0.0.0');
console.log("App listening on port " + port);

这是客户:

<script src="/src/bower_components/angular-socket-io/mock/socket-io.js"></script>
    <script src="/src/bower_components/angular-socket-io/socket.js"></script>
<script>  
    var socket = io.connect();
     console.log(socket);
     console.log("socket.io : ");
     socket.on('connect', function(data) {
       socket.emit('join', 'Hello World from client');
     });
</script>

我正努力让它发挥作用。但是当我重新加载网页时,似乎客户端没有事件尝试连接到服务器。事件如果放错了地址,就没有反应。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

阻止客户发送&#39;加入&#39;对服务器的事件是,您不需要将socket.emit逻辑放在“连接”中。事件。在客户端创建套接字后,您已连接。所以试试这个:

<script src="/src/bower_components/angular-socket-io/mock/socket-io.js"></script>
<script src="/src/bower_components/angular-socket-io/socket.js"></script>
<script>  
  var socket = io.connect();
    console.log(socket);
    console.log("socket.io : ");
    socket.emit('join', 'Hello World from client');
</script>

此外,在app.js内部,您似乎正在订阅“加入”&#39;事件两次。这是不必要的,您只需要订阅一次事件。例如:

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

  client.on('join', function(data) {
    console.log(data);
    client.emit('messages', 'Hello from server');
  });

});