在开发环境中,它按预期工作,服务器代码…在开发中,我只将客户端的url指定为const socket = io("http://localhost:3001");下面是服务器代码:
const httpServer = createServer(app);
export const io = new Server(httpServer, {
cors: {
origin: "*",
},
path: "/socket.io/",
});
io.on("connection", (socket) => {
// make function calls
postOrderDeliveryStatus(socket);
// getOrders(socket);
// console.log("Socket Connected");
// close socket
socket.on("disconnect", () => {
socket.disconnect(true);
});
});
httpServer.listen(3001);
//mongoose
// console.log(process.env.CONNECTION_URL)
mongoose
.connect(process.env.CONNECTION_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
})
.then(() =>
app.listen(PORT, () =>
winston.info(
`Server Running in ${process.env.NODE_ENV} mode on Port: ${PORT}`
)
)
)
.catch((error) => console.log(`${error} did not connect`));
mongoose.set("useFindAndModify", false);
客户端…
const socket = io("http://localhost:3001");
const dispatchOrderHandler = () => {
const delivery_status = "DISPATCHED";
socket.emit("update-order", order._id, delivery_status);
// dispatch(getOrderDetailsToProcess(paramsOrderId)); //This dispatch alone can suffice
socket.on("updated-order", (updated_order) => {
dispatch(
getOrderDetailsToProcess(paramsOrderId, (order) => [
...order,
updated_order,
])
);
});
};
当socket运行时,我得到的错误是net::ERR_CONNECTION_REFUSED。我也试过Const socket = io();没有指定url,因为客户端和服务器都在同一域上运行,但也没有?既然指定域名不起作用,那么生产中的连接URL应该是什么?我在用heroku!
当使用托管服务时,该服务将向客户端提供端口。可以通过process.env.PORT
访问该端口。为了使您作为开发人员的体验更友好,您可以使用httpServer.listen(process.env.PORT || 3001);
侦听端口。对于客户端,我相信你使用const socket = io();
是对的,虽然我没有使用socket。a while.
使用const socket = io("serverurl")
连接到特定的服务器
我相信你也可以在那里指定一个端口。
对于我的网站,我会输入:const socket = io("us2.swordbattle.io:3000")