我有一台服务器在前端运行,一台在后端运行。前端服务器是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;每台服务器。
答案 0 :(得分:0)
不,在socket.io中你有一个connection
回调,对于每个新连接,都会创建并存储一个新的socket
对象,这样你就可以发出和接收包含许多不同套接字的消息connection
回调正文!