插座.用于生产的io连接URL



在开发环境中,它按预期工作,服务器代码…在开发中,我只将客户端的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")

最新更新