繁体   English   中英

在春季使用websockets收到此错误,未捕获的类型错误:onrecieve不是一个函数(..)stomp.js

[英]In spring using websockets getting this error,uncaught type error: onrecieve is not a function(..) stomp.js

我收到此错误:

未捕获的类型错误:onrecieve不是函数(..)stomp.js

谁能帮助我,并使用stockjs,stomp和jars为我提供完整的设置?

我的文件:home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Reload..</title>




<%--  <script type="text/javascript" src='<c:url  value="/static/scripts/jquery.js"/>'></script>  --%>
<script type="text/javascript" src='<c:url value="/static/scripts/sockjs-  0.3.4.js"/>'></script> 
  <script type="text/javascript" src='<c:url value="/static/scripts/stomp.js"/>'></script>

   <script type="text/javascript">

   var stompClient=null;

  var onDebug = function(m) {
    console.log('DEBUG', m);
  };

  var connect=function(){
  var socket = new SockJS("/testwebsockets/portfolio");
    stompClient = Stomp.over(socket);
   stompClient.connect({}, function(frame) {
    console.log('Connecteds: ' + frame);
 stompClient.debug = onDebug;
stompClient.subscribe("/topic/portfolio",{},function(msgput){
    console.log("msg:"+msgput.body);
  });
},function(error){
  alert(error);
});
};





  var sendMessage=function(){
  stompClient.debug = onDebug;
  stompClient.send("/app/portfolio",   {},JSON.stringify({from:'kk',text:'hello'}));
  };



 </script>
 </head>
<body>
 <div>
            <button id="connect" onclick="connect();">Connect</button>


        <br />
        <div id="conversationDiv">

            <button id="sendMessage" onclick="sendMessage();">Send</button>

        </div>
    </div>


  </body>
  </html>

多数民众赞成在使用Javascript代码的jsp文件连接到websockets。 它确实连接了,但是从控制器接收回来却出现此错误:

未捕获的类型错误:onrecieve不是函数(..)stomp.js

正在打开Web套接字...
stomp.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:130 Web套接字已打开...
stomp.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:130 >>>连接
accept-version:1.1,1.0
心跳:10000,10000

<<<已连接
版本:1.1
心跳:0,0

连接到服务器未定义
(索引):34个已连接:已连接
心跳:0,0
版本:1.1

调试>>>订阅
id:sub-0
目的地:/ topic / portfolio

调试>>>发送
目的地:/ app / portfolio
内容长度:28

{“ from”:“ kk”,“ text”:“ hello”}

调试<<<消息
目的地:/ topic / portfolio
内容类型:application / json; charset = UTF-8
订阅:sub-0
讯息编号:h8_q6giw-0
内容长度:48

{“ from”:“ kk”,“ text”:“ hello”,“ timeStamp”:“ 08:26”}

stomp.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:288未捕获的TypeError:onreceive不是一个函数(...)(匿名函数)@ stomp.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:288REventTarget.dispatchEvent @
sockjs-0.3.4.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:84SockJS._dispatchMessage @
sockjs-0.3.4.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:1025SockJS._didMessage @
sockjs-0.3.4.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:1083that.ws.onmessage @
sockjs-0.3.4.js; jsessionid = 45714C4BB09BD6111D49A41D92FBBAC0:1215

您的问题源于传递给subscribe方法的错误的额外参数。

stompClient.subscribe("/topic/portfolio",{},function(msgput){
    console.log("msg:"+msgput.body);
});

应该变成:

stompClient.subscribe("/topic/portfolio",function(msgput){
    console.log("msg:"+msgput.body);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM