Node.js Socket.io在发出一次时连续显示消息

Node.js Socket.io在发出一次时连续显示消息,node.js,socket.io,Node.js,Socket.io,Socket.io仅发出一次时会持续显示消息,除非我重新加载页面,否则不会显示发出的消息 这是用于发出消息的代码: io.sockets.on('connection', function (socket) { console.log('A client is connected!'); socket.emit('notification.'+notification.recipient, {message: 'A user just registered under your re

Socket.io仅发出一次时会持续显示消息,除非我重新加载页面,否则不会显示发出的消息

这是用于发出消息的代码:

io.sockets.on('connection', function (socket) {
   console.log('A client is connected!');
   socket.emit('notification.'+notification.recipient, {message: 'A user just registered under your referral.'});
});
但当上述命令被触发时,“客户端已连接!”只记录一次,但在前端会持续显示,直到我退出服务器

以下是前端代码:

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io();

    socket.on("newNotification."+current_user, function(event) {
    console.log("Message Emited: ", event.message)

    }.bind(this));
</script>
这是bin/www代码:

#!/usr/bin/env node

require('dotenv').load();
var app = require('../app');
var debug = require('debug')('crypto-palace:server');
var http = require('http');

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);


var server = http.createServer(app);


server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

app.io.listen(server); 


function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {

    return val;
  }

  if (port >= 0) {
    return port;
  }

  return false;
}

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}


function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

提前谢谢。

我已经解决了这个问题

这个解决方案就在这里:

io.sockets.on('connection', function (socket) {
   console.log('A client is connected!');
   socket.emit('notification.'+notification.recipient, {message: 'A user just registered under your referral.'});
});
它根据连接的数量发出一次并多次显示消息

因此,这样做的权利是:

io.sockets.emit('notification.'+notification.recipient, {message: 'A user just registered under your referral.'});

这就解决了问题。

共享您的服务器代码如何侦听套接字(端口)…我已经添加了连接代码
io.sockets.emit('notification.'+notification.recipient, {message: 'A user just registered under your referral.'});