Socket.io 在事件侦听器中
Socket.io in Eventlistener
我正在尝试在用户单击带有 socket.io 的按钮时发送消息。这是我的服务器端代码:
const app = express()
const http = require('http')
const server = http.createServer(app)
var io = require('socket.io')(server);
io.on('connection', (socket) =>
{
io.emit("message")
})
server.listen(PORT, () => {
console.log(`Server is on port ${PORT}`);
});
这是我的前端 js 代码:
var socket = io()
const button = document.querySelector(".yolla")
const form = document.querySelector(".form")
const yazi = document.querySelector(".mesajlar")
form.addEventListener("submit", (e) =>
{
socket.on("message", () =>
{
console.log(yazi.value)
})
})
这是我的哈巴狗代码:
extends ../header2.pug
block unique-css
include ../../public/css/mentor/chat.css
block unique-content
.main
.ekran
.ust
h2 Özgür Arslan
hr
.msg
form(action="" class="form")
input(type="text" class="mesajlar" placeholder="Mesajınızı giriniz.")
button(class="yolla" type="button") Gönder
script(src="/socket.io/socket.io.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.0.1/mustache.min.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/qs/6.6.0/qs.min.js")
script
include ../../public/js/mentor
当我点击按钮时没有任何反应。我想在此聊天应用程序中为所有在线用户打印输入元素的值。感谢阅读。
您的 emit/on 功能倒退了。 socket.on 应该发生在服务器中以对应该发生在客户端(前端)中的 socket.emit 做出反应。
// Server
io.on('connection', (socket) => {
io.emit('message', 'Welcome'); // To the frontend
socket.on('message', (msg) => { console.log('Message', msg); }); // From the frontned
});
客户:
// Frontend
socket.on("message", (msg) => { console.log(msg); }); // From server
form.addEventListener("submit", (e) => {
socket.emit("message", yazi.value); // To server
});
我正在尝试在用户单击带有 socket.io 的按钮时发送消息。这是我的服务器端代码:
const app = express()
const http = require('http')
const server = http.createServer(app)
var io = require('socket.io')(server);
io.on('connection', (socket) =>
{
io.emit("message")
})
server.listen(PORT, () => {
console.log(`Server is on port ${PORT}`);
});
这是我的前端 js 代码:
var socket = io()
const button = document.querySelector(".yolla")
const form = document.querySelector(".form")
const yazi = document.querySelector(".mesajlar")
form.addEventListener("submit", (e) =>
{
socket.on("message", () =>
{
console.log(yazi.value)
})
})
这是我的哈巴狗代码:
extends ../header2.pug
block unique-css
include ../../public/css/mentor/chat.css
block unique-content
.main
.ekran
.ust
h2 Özgür Arslan
hr
.msg
form(action="" class="form")
input(type="text" class="mesajlar" placeholder="Mesajınızı giriniz.")
button(class="yolla" type="button") Gönder
script(src="/socket.io/socket.io.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.0.1/mustache.min.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js")
script(src="https://cdnjs.cloudflare.com/ajax/libs/qs/6.6.0/qs.min.js")
script
include ../../public/js/mentor
当我点击按钮时没有任何反应。我想在此聊天应用程序中为所有在线用户打印输入元素的值。感谢阅读。
您的 emit/on 功能倒退了。 socket.on 应该发生在服务器中以对应该发生在客户端(前端)中的 socket.emit 做出反应。
// Server
io.on('connection', (socket) => {
io.emit('message', 'Welcome'); // To the frontend
socket.on('message', (msg) => { console.log('Message', msg); }); // From the frontned
});
客户:
// Frontend
socket.on("message", (msg) => { console.log(msg); }); // From server
form.addEventListener("submit", (e) => {
socket.emit("message", yazi.value); // To server
});