首页 > 解决方案 > 有没有办法将 javascript 对象转换为字符串?

问题描述

我正在构建一个简单的聊天应用程序,并想用欢迎消息迎接新用户,但我看到的只是 [object Object]。连接正常。该怎么办?

这是我用来建模消息的消息对象

const generateMessage = (text) => {
    return {
        text,
        createdAt: new Date().getTime()
    }
}

module.exports = {
    generateMessage
}

这是我的连接

io.on("connection", (socket) => {
    console.log("New socket connection")

    socket.emit("message", generateMessage("Welcome to the chat"))
    socket.broadcast.emit("message", "A new user has joined",)

    socket.on("sendMessage", (message, callback) => {
        io.emit("message", message)
        callback()
    })
    socket.on("disconnect", () => {
        io.emit("message", "A user has left")
    })
})

这是我将消息呈现给浏览器的html

<body>
    Chat app

    <div id="messages"></div>

    <form id="message-form">
        <input name="message" placeholder="Message">
        <button>Send</button>
    </form>
    

    <template id="message-template">
            <p></p>
    </template>

    <script src="/socket.io/socket.io.js"></script>
    <script src="../chat/chat2.js"></script>
</body>

标签: javascripthtml

解决方案


在您的客户端(html 文件)中,您应该创建消息访问对象的文本属性:

const htmlMessageText = messageObjReceivedFromSocket.text

不传递对象本身。

如果发布您如何处理客户端上的套接字事件,它将更容易帮助您。


推荐阅读