为什么我的应用程序会从同一台服务器创建多个套接字

时间:2018-01-31 16:29:23

标签: javascript node.js sockets socket.io

我有一台服务器在前端运行,一台在后端运行。前端服务器是localhost:8080,后端是localhost:3000。

这是我的后端服务器文件:

import express from 'express';
import socket from 'socket.io';

const app = express();

const server = app.listen(3000, () => {
  console.log('Listening on port 3000');
});

const io = socket(server);

io.on('connection', (socket) => {
  console.log('made socket connection', socket.id);

  socket.on('chat', (data) => {
    io.sockets.emit('chat', data);
  });

  socket.on('typing', (data) => {
    socket.broadcast.emit('typing', data);
  });
});

这是前端服务器:

const socket = io.connect('http://localhost:3000');

const send = '#send',
      message = '#message',
      name = '#name',
      output = '#output',
      status = '#status'

$(send).click(() => {
  socket.emit('chat', {
    message: $(message).val(),
    name: $(name).val()
  });
});

$(message).keypress(() => {
  socket.emit('typing', $(name).val());
});

socket.on('chat', (data) => {
  $(status).html('');
  $(output).append('<p><strong>' + data.name + ': </strong>' + data.message + '</p>');
});

socket.on('typing', (data) => {
  $(status).html('<p><em>' + data + ' is typing a message...</em></p>');
});

在前端,每​​当我打开一个新选项卡并访问localhost:8080时,就会创建一个新的套接字并建立套接字连接&#39;消息出现。这让我感到困惑,因为我的理解是有一个插座&#39;每台服务器。

1 个答案:

答案 0 :(得分:0)

不,在socket.io中你有一个connection回调,对于每个新连接,都会创建并存储一个新的socket对象,这样你就可以发出和接收包含许多不同套接字的消息connection回调正文!