Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.IO客户端未在生产环境中侦听服务器请求_Javascript_Node.js_Reactjs_Heroku_Socket.io - Fatal编程技术网

Javascript Socket.IO客户端未在生产环境中侦听服务器请求

Javascript Socket.IO客户端未在生产环境中侦听服务器请求,javascript,node.js,reactjs,heroku,socket.io,Javascript,Node.js,Reactjs,Heroku,Socket.io,我有一个用React.js,express.js开发的socket.IO聊天应用程序,它在dev中工作,但在prod中不工作。我的客户端应用程序在github上提供,我的服务器在heroku上,我正在使用socket。IO@1.7.0 客户端代码 服务器会听到请求,但服务器不会听到套接字。客户端上的on('message') import React,{useState,useffect}来自“React” 从“查询字符串”导入查询字符串 从“../Messages/Messages”导入消息

我有一个用
React.js
express.js
开发的
socket.IO
聊天应用程序,它在dev中工作,但在prod中不工作。我的客户端应用程序在
github
上提供,我的服务器在
heroku
上,我正在使用
socket。IO@1.7.0

客户端代码 服务器会听到请求,但服务器不会听到套接字。客户端上的on('message')

import React,{useState,useffect}来自“React”
从“查询字符串”导入查询字符串
从“../Messages/Messages”导入消息
从“../InfoBar/InfoBar”导入信息栏
从“../Input/Input”导入输入
导入“./Chat.css”
从“socket.io客户端”导入io
从“../../../api/message”导入{msgFrom,msgTo}
从“../../api/config”导入APIRL
const ENDPOINT=apirl
插座
const Chat=({user,location,setUser,opers,setOpers})=>{
如果(用户){
const{name,room,to}=queryString.parse(location.search)
常量filteredMessages=[]
user.messages.map(m=>{
if(m.receiverId==to | | m.senderId==to){filteredMessages.push(m)}
})
const[msgs,setMsgs]=useState(filteredMessages)
const[msg,setMsg]=useState(“”)
useffect(()=>{
套接字=io(端点)
emit('join',{name,room},(错误)=>{
console.log('加入房间')
if(error){alert(error)}
})
return()=>socket.close()
},[ENDPOINT,location.search])
useffect(()=>{
socket.on('message',msg=>{
console.log('听到消息')
setMsgs(msgs=>[…msgs,msg])
msgTo(消息、用户、收件人、房间)
msgFrom(msg,user,to,room)。然后((res)=>setUser(res.data))
});socket.on('roomData',({opers})=>setOpers(opers))
}, [])
const sendMessage=(e)=>{
e、 预防默认值()
console.log('向服务器发送消息:',msg)
if(msg){socket.emit('sendMessage',msg,()=>setMsg('')}
};返回(
)
}否则{
return您必须登录才能访问此页面
}
}
导出默认聊天
服务器代码
joinRoom
在生产环境中由服务器听到,但
sendmages
在开发环境中由服务器听到,而不是生产环境

const{addOper,removeOper,getOper,getOpersInRoom}=require(“./operators”)
const socketIo=require('socket.io')
exports.joinRoom=(套接字,io)=>{
on('join',({name,room},callback)=>{
const{error,oper}=addOper({id:socket.id,name,room})
console.log('user connected',name,oper)
如果(错误)返回回调(错误)
插座连接(操作室)
io.to(oper.room).emit('roomData',{room:oper.room,opers:getOpersInRoom(oper.room)})
回调函数()
})
}
exports.sendMessage=(套接字,io)=>{
socket.on('sendMessage',(message,callback)=>{
const oper=getOper(socket.id)
io.to(oper.room.emit('message',{oper:oper.name,text:message})
回调函数()
})
}
exports.disconnect=(套接字,io)=>{
socket.on('disconnect',()=>{
const oper=removeOper(socket.id)
console.log('user disconnected',oper)
如果(操作){
io.to(oper.room).emit('roomData',{room:oper.room,opers:getOpersInRoom(oper.room)})
}
})
}