Web套接字拒绝连接socket.io

时间:2018-09-26 18:30:21

标签: node.js express socket.io

我正在使用

加载脚本
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="/js/chat.js"></script>

我的chat.js脚本是:

var socket = io();

socket.on('connect', function(){
  var chatForm = document.forms.chatForm;
  if (chatForm) {
    var chatUsername = document.querySelector('#chat-username');
    var chatMessage = document.querySelector('#chat-message');

    chatForm.addEventListener("submit", function(e){
      console.log("working")
      //prevents page from reloading
      e.preventDefault();
      //emit the message with the socket
      socket.emit('postMessage',{
        username: chatUsername.value,
        message: chatMessage.value,
      });

      chatMessage.value='';
      chatMessage.focus();
    });//chatform event

    socket.on('updateMessages', function(data) {
      showMessage(data);
    });//update messages
  }//chatForm
})

function showMessage(data) {
  var chatDisplay = document.querySelector('.chat-display')
  var newMessage = document.createElement('p');
  newMessage.className = 'bg-success chat-text';
  newMessage.innerHTML = '<strong>' + data.username + '<strong>:</strong>' + 
    data.message
  chatDisplay.insertBefore(newMessage, chatDisplay.firstChild);
}

我的app.js文件使用:

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


var server = app.listen(app.get('port'), function() {
  console.log('Listening on port ' + app.get('port'));
});

io.attach(server);

io.on('connection', function(socket) {
  console.log("user connected");
  socket.on('postMessage', function(data) {
    io.emit('updateMessages', data);
  });
});

我的控制台出现以下错误,不知道如何解决。有人请帮忙! enter image description here

服务器正在侦听端口3000。我的控制台说有一个未处理的“错误”事件

1 个答案:

答案 0 :(得分:0)

在app.js文件中,您应该在侦听之前连接socketIO:

const socketIO = require('socket-io');

const io = socketIO(app);

io.on('connection', function(socket) {
  console.log("user connected");
  socket.on('postMessage', function(data) {
    io.emit('updateMessages', data);
  });
});

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

app.listen(app.get('port'), function() {
  console.log('Listening on port ' + app.get('port'));
});

请尝试一下,因为我认为听完后一切都将失效。我们应该在收听之前连接socketIO。