【发布时间】:2021-04-07 11:15:46
【问题描述】:
我是 socket.io 的新手。我有一个有效的消息聊天设置,我正在尝试为消息添加名称。我有一个名为 name 的变量,它保存了每个登录的用户名。下面是代码。
在保存聊天的 HTML 页面上。聊天室.html
const room = 'waiting';
const socket = io('/tech');
$('form').submit(() => {
let msg = $('#m').val();
socket.emit('message', { msg, room });
$('#m').val('');
return false;
});
socket.on('connect', () => {
// emiting to everybody
socket.emit('join', { room: room });
})
socket.on('message', (msg) => {
$('#messages').append($('<li>').text(name + msg));
})
在服务器脚本上。 index.js
const app = require('express')();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const port = 3001;
server.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
app.get('/', (req, res) => {
res.sendFile(__dirname + '/virtualsim/learning/chat-room.html');
});
app.get('/trainees', (req, res) => {
res.sendFile(__dirname + '/virtualsim/learning/chat-room2.html');
});
const tech = io.of('/tech');
tech.on('connection', (socket) => {
socket.on('join', (data) => {
socket.join(data.room);
tech.in(data.room).emit('message', `joined ${data.room} room!`);
})
socket.on('message', (data) => {
console.log(`message: ${data.msg}`);
tech.in(data.room).emit('message', data.msg);
});
socket.on('disconnect', () => {
console.log('user disconnected');
tech.emit('message', 'user disconnected');
})
})
显然,我现在的方式只是将每条发送的消息(甚至是其他用户发送的消息)发回用户的姓名。我需要以某种方式将变量 name 添加到服务器脚本中,但我很难让它工作。谢谢你的帮助。约翰
【问题讨论】:
-
您可以将名称分配给服务器上的套接字变量。
标签: javascript node.js socket.io message