大佬教程收集整理的这篇文章主要介绍了大家好,我部署了 MERN 项目。我的聊天没有错误,但只有 3 秒,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的游戏聊天没有错误,但只有 3 秒,然后它不显示来自服务器的数据并且发送消息不起作用。我将 console.log ('action') 放在 useEffect 钩子中,发现在将 'action' 打印到控制台时聊天有效。
node.Js:
let messages = ['test']
let nicknames = ['admin']
wss.on('connection',function connection(ws) {
ws.send(JsON.Stringify({nicknames: nicknames,messages: messages}))
ws.on('message',function incoming(message,Name) {
messages.push(messagE)
nicknames.push(Name)
ws.send(JsON.Stringify({nicknames: nicknames,messages: messages}))
})
})
server.Listen(8888,() => console.log("web socket server started"))
反应:
文本状态:
const [message,setmessage] = useState('');
const [messages,setmessages] = useState([])
const [messagesLoaded,setmessagesLoaded] = useState(false)
const webSocket = new WebSocket('ws://localhost:8888')
发送消息:
function handleChange(E) {
setmessage(e.target.value)
}
function sendmessage(E) {
e.preventDefault()
webSocket.onopen = () => webSocket.send(messagE)
setmessage("")
}
从服务器获取消息:
useEffect(() => {
webSocket.onopen = () => {
webSocket.onmessage = function (event) {
setmessages(JsON.parse(event.data))
setmessagesLoaded(true)
console.log(messages.messages)
}
}
})
//render messges:
if (messagesLoaded) {
return (
messages.messages.map(item => {
return (
<div classname="messageCard" key={Math.random()}>
<p>{item}</p>
</div>
)
})
)
}
完整代码:
import React,{ useState,useEffect } from 'react'
function Chat() {
const [message,setmessage] = useState('');
const [messages,setmessages] = useState([])
const [messagesLoaded,setmessagesLoaded] = useState(false)
const webSocket = new WebSocket('ws://localhost:8888')
function handleChange(E) {
setmessage(e.target.value)
}
function sendmessage(E) {
e.preventDefault()
webSocket.onopen = () => webSocket.send(messagE)
setmessage("")
}
useEffect(() => {
webSocket.onopen = () => {
webSocket.onmessage = function (event) {
setmessages(JsON.parse(event.data))
setmessagesLoaded(true)
console.log(messages.messages)
}
}
})
return (
<div>
<div>
<ChaTinterface />
</div>
<form onsubmit={sendmessagE}>
<input value={messagE} onChange={handleChangE} placeholder="Say something..." />
<button>Send</button>
</form>
</div>
)
function ChaTinterface() {
if (messagesLoaded) {
return (
messages.messages.map(item => {
return (
<div classname="messageCard" key={Math.random()}>
<p>{item}</p>
</div>
)
})
)
}
else {
return (
<p classname="center">Загрузка сообщений...</p>
)
}
}
}
export default Chat
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的大家好,我部署了 MERN 项目。我的聊天没有错误,但只有 3 秒全部内容,希望文章能够帮你解决大家好,我部署了 MERN 项目。我的聊天没有错误,但只有 3 秒所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。