前端EventSource收不到流数据及EventSource的onmessage不执行问题

这篇具有很好参考价值的文章主要介绍了前端EventSource收不到流数据及EventSource的onmessage不执行问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

在使用EventSource的onmessage接收后台数据时,发现不论怎么写,都没法在前端展示后台返回过来的数据,但是event.error和open是可以执行的,前段代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>EventSource Example</title>
</head>
<body>
<h1>get my page!</h1>
  <div id="messages"></div>
  <script>
    var source = new EventSource("/interface");
    source.onmessage = function(event) {. //这里不执行
        // Update the content of the HTML page with the data received from the EventSource
        document.getElementById("messages").innerHTML += event.data;
    };
    source.onerror = function(event) {   //这却能执行
        console.log("EventSource error:", event);
    };
    source.onopen = function(event) {    //这也能执行  
        console.log("EventSource connection opened");
    };
  </script>
</body>
</html>

解决方法

EventSource在前端是有自己的一套解析格式的,即:

event: message\n
data: {BackendValue}\n\n

其中,BackendValue是你要返回给前端的内容。
所以我们后端返回数据时,比如你要返回一个字符串,那就把字符串的头部拼接上event: message\ndata: , 并把字符串的尾部拼接上\n\n,即在你的数据尾部增加两个换行回车。
JSP格式的表示如下:

out.write("event: message\n");
out.write("data:" + value + "\n\n");

应该看得很清楚了,如果还不理解,看一下我推荐的几篇文章,就懂了。
参考这篇文章:EventSource onmessage() is not working
参考这篇论坛讨论:EventSource的onmessage不执行文章来源地址https://www.toymoban.com/news/detail-665780.html

到了这里,关于前端EventSource收不到流数据及EventSource的onmessage不执行问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【CMD】执行adb devices找不到设备的问题

    首先描述一下当时遇到的情况,手机USB连接电脑提示正常,设备管理器显示手机设备正常,问题是执行命令 adb devices 找不到设备 在Windows系统 资源管理器下,找到 AndroidSdk 路径打开,看看那个文件夹 platform-tools 里有什么,有一个 adb.exe 程序,如下图所示 接下来,点鼠标右键

    2024年02月07日
    浏览(58)
  • 找不到vcruntime140_1.dll无法执行的问题解决方案

    随着技术的不断进步,人们越来越依赖电脑来处理日常工作。时常在安装或运行一些软件的时候,我们可能会碰到一些提示信息,其中的“找不到vcruntime140_1.dll无法执行”就是很常见的一种。今天我们就来探讨一下这个问题的原因和解决方案。 一.vcruntime140_1.dll问题的原因 通

    2024年02月05日
    浏览(44)
  • Jenkins部署ssh连接远程主机执行脚本找不到环境变量的问题

    最近在Jenkins部署远程执行其他服务器上的编译脚本时遇到报找不到编译器的问题,耗时两天尝试了排序比较靠前的一些方法,但都没能解决问题,所以决定记录下,希望能帮助到大家。 执行命令:ssh root@远程主机 /studio/test.sh 编译报错: /bin/sh: 1: aarch64-linux-gnu-gcc: not found 注

    2024年02月15日
    浏览(45)
  • 解决找不到msvcr120.dll无法继续执行问题的5个方法,快速解决dll问题

    在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是找不到msvcr120.dll的错误。这个错误通常发生在运行某些程序或游戏时,它会导致程序无法正常启动或运行。那么,如何解决找不到msvcr120.dll的问题呢?下面我将分享一些修复方法,希望对大家有所帮助。  

    2024年02月06日
    浏览(57)
  • 修复由于找不到vcruntime140.dll,无法继续执行代码的问题方法【常用运行库】

    提示“由于找不到 VCRUNTIME140.dll,无法继续执行代码。重新安装程序可能会解决此问题。”,这一般是什么原因导致了这个问题,我们要如何解决?下面给大家分享一下由于找不到vcruntime140.dll无法继续执行代码的解决方法。 原因: vcruntime140.dll文件即动态链接库文件,系统缺

    2024年02月13日
    浏览(62)
  • 由于找不到VCRUNTIME140.dl,无法继续执行代码,重新安装程序可能会解决此问题。

    说明: vcruntime140.dll可以理解为运行环境14.0版本,一段时间以前,对应版本为Microsoft Visual Studio 2015,所以理论上电脑上如果安装过vs2015应该不会报错; 解决方法:  在微软官网下载最新的Microsoft Visual C++ 设置成功如下:  都安装成功后,可重启电脑即可  

    2024年02月12日
    浏览(60)
  • 由于找不到MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

    这是因为没有安装微软常用运行库合集64位导致的,点击如下链接 进入微软下载中心下载vcredist ,官网地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=40784 重新执行命令 mysqld --initialize

    2024年02月11日
    浏览(64)
  • 一招搞定电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”问题

    玩游戏或者运行程序软件的时候,电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”是怎么回事呢?其实xinput1_3.dll是Windows操作系统中的一个动态链接库文件,它是DirectX API的一部分,用于提供对输入设备的支持,包括游戏手柄、键盘和鼠标等。作为计算机当中一个必不

    2024年02月09日
    浏览(101)
  • 由于找不到vcruntime140_1.dll,无法继续执行代码重新安装程序可能会解决此问题

    由于找不到vcruntime140_1.dll,无法继续执行代码,重新安装程序可能会解决此问题。 安装好mysql启动时报错: 由于找不到vcruntime140_1.dll,无法继续执行代码,重新安装程序可能会解决此问题。 因为缺少了动态链接库也就是以DLL系统文件,我们该如何安装或许修复一份加进去呢。 首

    2023年04月18日
    浏览(70)
  • 由于找不到unityplayer.dll无法继续执行代码如何解决?UnityPlayer.dll丢失引发的程序执行障碍问题解析与全面解决方案指南

    在使用Unity引擎开发的游戏或应用中,时常会遇到一个常见的问题:“由于找不到unityplayer.dll,无法继续执行代码。”这个错误信息表明,运行环境在尝试启动基于Unity制作的应用程序时,无法找到一个关键的动态链接库(DLL)文件——UnityPlayer.dll,从而导致程序无法正常启动

    2024年04月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包