socket.broadcast.emit不发送给客户端

时间:2020-07-23 20:46:42

标签: node.js socket.io

我正在尝试制作一个简单的聊天应用程序,到目前为止,一切正常,直到我必须将消息发送给每个已连接用户(除了发送消息的用户之外)为止按照教程进行操作,请参考文档,但没有任何效果,因此我不知道,我对Node和JS还是陌生的。代码:

//server side 
const io = require("socket.io")(3000)


io.on("connection", socket => {
    console.log("New User ")
    socket.on("chat-message", message => {
        if (message !== "") {
            socket.broadcast.emit("broadcast-message", message)
        } else {
            console.log("Empty String")
        }

    })
})
//client side
const socket = io("http://localhost:3000")
const messageForm = document.getElementById("send-container")
const messageInput = document.getElementById("message-input")

messageForm.addEventListener("submit", event => {
    event.preventDefault()
    const message = messageInput.value
    socket.emit("chat-message", message)
    messageInput.value = ""

})
socket.on("broadcast-message", message => {
    console.log("broadcast : " + message)
})

1 个答案:

答案 0 :(得分:0)

我认为设置服务器出了点问题,尝试一下。

//server-side
const express=require("express")
const app=express()
const server=require("http").createServer(app)
 //pass server variable instead of port
const io=require("socket.io")(server)
server.listen(3000,()=>console.log(`Listening to port 3000`))

在客户端,仅需要socket=io()。如果传递localhost URL,则部署后将引发错误