【问题标题】:Message dissapears after page reload页面重新加载后消息消失
【发布时间】:2020-09-23 15:23:45
【问题描述】:

我创建了一个socket.io网络应用程序,当我单击按钮发送消息时,消息会出现一秒钟,但是当页面无缘无故自动刷新时,消息就会消失。如何防止页面刷新以及如何让 socket.io 保存我的消息。

这是服务器代码:

var express = require("express");
var io = require("socket.io")(4000);
var fetch = require("node-fetch");
var express = require("express");
var bodyParser = require("body-parser");

var app = express();

io.on("connection", (socket) => {
  socket.on("message", (msg) => {
    io.emit("message", msg);
  });
});

app.use(bodyParser.urlencoded({ extended: true }));

var stats = [];

app.post("/api", (request, response) => {
  var key = "E9BEFD12B99EF8838E61F7A74D9C6A4B";
  fetch(
    `http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=730&key=${key}&steamid=${request.body.user}`
  )
    .then((res) => res.json())
    .then((json) => response.send(json) | stats.push(json));
});

app.listen(3000, () => {
  console.log("server running");
});

这是客户端代码:

var socket = io("ws://localhost:4000/");

var send = () => {
  socket.emit("message", document.getElementById("message").value);
  document.getElementById("message").value = " ";
  return false;
};

socket.on("message", (msg) => {
  document.getElementById("messages").innerHTML = "<p>" + msg + "</p>";
});

只要我按下按钮,发送功能就会执行。

【问题讨论】:

  • 我猜你按下的按钮是在一个表单中,它会触发默认操作,从而再次加载相同的页面
  • @Seblor 所说的 - 您应该为您的页面发布 HTML。这可能就是问题所在。
  • @Seblor 我从 html 中删除了表单标签,现在它可以工作了,谢谢队友
  • @DCAdarko 你应该写下你的解决方案作为答案,以防有人稍后通过谷歌找到你的问题

标签: javascript node.js socket.io


【解决方案1】:

为了解决这个问题,我只是从html文件中删除了表单标签,问题是每次提交表单时页面默认刷新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2022-07-12
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2020-10-08
    相关资源
    最近更新 更多