dongyan3237 2017-11-01 19:33
浏览 80

too long

I've gone through the other answers to this question, but no one seems to be able to apply it universally. Other questions just go unanswered.

Obviously, I'm getting "Can not deserialize instance of String out of START_OBJECT token." in my console. I believe it happens when I attempt to stringify(response) from my websocketdata.

Here is the code.

    <?php /**
 * The Header for our theme.
 *
 * Displays all of the <head> section and everything up till <div id="main">
 *
 */ ?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
    <!--<![endif]-->
    <head>
        <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
        <script type="text/javascript"
          src='http://martialparks.com/wp-content/themes/js/gamesparks-rt.js'></script>
        <script type='text/javascript' src='http://martialparks.com/wp-content/themes/js/gamesparks.js'></script>
        <script type='text/javascript'
          src='http://martialparks.com/wp-content/themes/js/gamesparks-functions.js'></script>
        <script type='text/javascript' src='http://martialparks.com/wp-content/themes/js/hmac-sha256.js'></script>
        <link rel="profile" href="http://gmpg.org/xfn/11" />
        <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
        <?php
        wp_head();
        ?>
    </head>

    <body <?php body_class() ?>>
        <body onload="init()">
        <!--Start Header Wrapper-->
        <div class="header_wrapper">
            <div class="header">
                <!--Start Container-->
                <div class="container_24">
                    <div class="grid_24">
                        <div class="logo"> <a href="<?php echo esc_url(home_url()); ?>"><img src="<?php if (business_directory_get_option('business_directory_logo') != '') { ?><?php echo esc_url(business_directory_get_option('business_directory_logo')); ?><?php
                                } else {
                                    echo esc_url(get_template_directory_uri() . '/images/logo.png');
                                }
                                ?>" alt="<?php bloginfo('name'); ?>" /></a></div>
                    </div>
                    <div class="clear"></div>
                </div>
                <!--End Container-->
                <div class="clear"></div>
            </div>
            <div class="clear"></div>
            <!--Start Menu Wrapper-->
            <div class="menu_wrapper">
                <div class="top_arc"></div>
                <div class="menu-container">
                    <div class="container_24">
                        <div class="grid_24">
                            <?php business_directory_nav(); ?> 
                        </div>
                    </div>
                    <div class="clear"></div>
                </div>
                <div class="clear"></div>
                <div class="bottom_arc"></div>
            </div>
            <!--End Container-->
            <div class="clear"></div>
        </div>
        <!--End Header Wrapper-->
        <div class="clear"></div>
        <div class="wrapper">
            <!--Start Container-->
            <div class="container_24">
                <div class="grid_24">
                <br/>
                <br/>
                <br/>
                  <input id="apiKey" type="hidden" value="A319082inSk2"/>
                  <input id="apiSecret" type="hidden" value="BNuYLYZAoDZDZyh1F7tbR8BMTiqeJbWt"/>
                  <label for="apiCredential">Api Credential</label><input id="apiCredential"/>
                  <label for="username">User Name</label><input id="username"/>
                  <label for="password">Password</label><input id="password"/>
                  <button onClick='gamesparks.registrationRequest("testuser", "testuser", "testuser", registerResponse)'>Register</button>
                    <button onClick='gamesparks.authenticationRequest(username, password, loginResponse)'>Login</button>
                    <button onClick='gamesparks.accountDetailsRequest(accountDetailsResponse)'>Account Details</button>
                    <button onClick='customEvent()'>Custom Event</button>
                    <button onClick='testRT()'>Test RT</button>
                  <i>Special thanks to the awesome team at GameSparks!</i>
                  <div id="messages"></div>
                  <br/>
                  <br/>


User Name
<div id="displayName" style="color: blue;"></div>
Coins
<div id="Coins" style="color: red;"></div>
Exp
<div id="Exp" style="color: green;"></div>
Leader Points
<div id="LeadP" style="color: darkgreen;"></div>
Hero Points
<div id="HeroP" style="color: purple;"></div>

                <style>
                    #map {
                    height: 400px;
                    width: 100%;
                    }
                </style>

                <h3>Find a Park</h3>
                    <div id="map"></div>
                    <script>
                      function initMap() {
                        var Velocity = {lat: 38.308101, lng: -85.815464};
                        var map = new google.maps.Map(document.getElementById('map'), {
                          zoom: 4,
                          center: Velocity
                        });
                        var marker = new google.maps.Marker({
                          position: Velocity,
                          map: map
                        });
                      }
                    </script>
                    <script async defer
                    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDSHCinT3IVWFCLUudbsMZV6644GNrGiwc&callback=initMap">
                    </script>



<script type="text/javascript">

  //Create a gamesparks object to be used
  var gamesparks = new GameSparks();

  //Initialse the SDK
  function init() {
    gamesparks.initPreview({
      key: document.getElementById('apiKey').value,
      secret: document.getElementById('apiSecret').value,
      credential: document.getElementById('apiCredential').value,
      onNonce: onNonce,
      onInit: onInit,
      onMessage: onMessage,
      logger: console.log,
    });
  }

  function accountDetailsResponseCreator() {
    var response = {
      displayName: 'A User',
      currencies: {Coins: 'A coin', Exp: 'A exp', LeadP: 'A lead p', HeroP: 'A hero p'}
    }
    accountDetailsResponse(response)
  }

  //Callback function to hmac sha256 a nonce with the secret. It's assumed you will have your own method of securing the secret;
  function onNonce(nonce) {
    return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(nonce, document.getElementById('apiSecret').value));
  }

  //Callback to handle when the SDK is initialised and ready to go
  function onInit() {
    console.log("Initialised");
  }

  //Callback to handle async messages from the gamesparks platform
  function onMessage(message) {
    console.log("onMessage");
  }

  //Response handler examples
  function registerResponse(response) {
    console.log(JSON.stringify(response));
  }

  function loginResponse(response) {
    console.log(JSON.stringify(response));
  }

  function accountDetailsResponse(response) {
    console.log (JSON.stringify(response));//logs the string to console
    document.getElementById("displayName").innerHTML = (response.displayName);
    document.getElementById("Coins").innerHTML = (response.currencies.Coins);
    document.getElementById("Exp").innerHTML = (response.currencies.Exp);
    document.getElementById("LeadP").innerHTML = (response.currencies.LeadP);
    document.getElementById("HeroP").innerHTML = (response.currencies.HeroP); //returns value of name from string.  I've tried doing each line with semicolons at the end, and all in a group with commas separating them.  Both just give me the first variable and delete the rest.
  }

  function customEvent() {
    gamesparks.sendWithData(
      "LogEventRequest",
      {
        eventKey: "FIRST_EVENT",
        NUMBER_ATTR: 123,
        STRING_ATTR: "this is a string",
        JSON_ATTR: {key1: 12, key2: "abc"}
      },
      function (response) {
        console.log(JSON.stringify(response));
      }
    );
  }

  var apiKey = "2974660weiMa";
  var apiSecret = "p5pFVnohi5eWPYETb4aPgeMLtd95bjfJ";
  var myTimer = null;
  var myRTSession = function () {
  };
  var numCycles = 0;

  myRTSession.started = false;
  myRTSession.onPlayerConnectCB = null;
  myRTSession.onPlayerDisconnectCB = null;
  myRTSession.onReadyCB = null;
  myRTSession.onPacketCB = null;
  myRTSession.session = null;

  myRTSession.start = function (connectToken, host, port) {
    var index = host.indexOf(":");
    var theHost;

    if (index > 0) {
      theHost = host.slice(0, index);
    } else {
      theHost = host;
    }

    console.log(theHost + " : " + port);

    myRTSession.session = GameSparksRT.getSession(connectToken, theHost, port, myRTSession);
    if (myRTSession.session != null) {
      myRTSession.started = true;

      myRTSession.session.start();
    } else {
      myRTSession.started = false;
    }
  };

  myRTSession.stop = function () {
    myRTSession.started = false;

    if (myRTSession.session != null) {
      myRTSession.session.stop();
    }
  };

  myRTSession.log = function (message) {
    var peers = "|";

    for (var k in myRTSession.session.activePeers) {
      peers = peers + myRTSession.session.activePeers[k] + "|";
    }

    console.log(myRTSession.session.peerId + ": " + message + " peers:" + peers);
  };

  myRTSession.onPlayerConnect = function (peerId) {
    myRTSession.log(" OnPlayerConnect:" + peerId);

    if (myRTSession.onPlayerConnectCB != null) {
      myRTSession.onPlayerConnectCB(peerId);
    }
  };

  myRTSession.onPlayerDisconnect = function (peerId) {
    myRTSession.log(" OnPlayerDisconnect:" + peerId);

    if (myRTSession.onPlayerDisconnectCB != null) {
      myRTSession.onPlayerDisconnectCB(peerId);
    }
  };

  myRTSession.onReady = function (ready) {
    myRTSession.log(" OnReady:" + ready.toString());

    if (myRTSession.onReadyCB != null) {
      myRTSession.onReadyCB(ready);
    }
  };

  myRTSession.onPacket = function (packet) {
    myRTSession.log(" OnPacket:" + packet.toString());

    if (myRTSession.onPacketCB != null) {
      myRTSession.onPacketCB(packet);
    }
  };

  function testRT() {
    myRTSession.stop();

    gamesparks.initPreview({
      key: apiKey,
      secret: apiSecret,
      credential: "",
      onNonce: onNonceRT,
      onInit: onInitRT,
      onMessage: onMessageRT,
      logger: console.log,
    });
  }

  function onNonceRT(nonce) {
    return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(nonce, apiSecret));
  }

  function onInitRT() {
    console.log("Initialised");

    gamesparks.deviceAuthenticationRequest((Math.floor(Math.random() * (999 - 1)) + 1).toString(), null, null, "js", null, null, function (response) {
      if (response.error) {
        console.error(JSON.stringify(response.error));
      } else {
        sendMatchmakingRequest();
      }
    });
  }

  //Callback to handle async messages from the gamesparks platform
  function onMessageRT(message) {
    //console.log("message " + JSON.stringify(message));
    if (message["@class"] === ".MatchFoundMessage") {
      var accessToken = message["accessToken"];
      var host = message["host"];
      var port = message["port"];

      myRTSession.stop();

      if (myTimer) {
        clearTimeout(myTimer);
      }

      myTimer = setInterval(mainRTLoop, 10);

      myRTSession.start(accessToken, host, port);
    } else if (message["@class"] === ".MatchNotFoundMessage") {
      console.log("MATCH NOT FOUND");

      sendMatchmakingRequest();
    }
  }

  function sendMatchmakingRequest() {
    gamesparks.sendWithData("MatchmakingRequest",
      {
        skill: 1,
        matchShortCode: "Match_STD"
      },
      function (response) {
        if (response.error) {
          console.error(JSON.stringify(response.error));
        } else {
          console.log("Match OK...");
        }
      }
    );
  }

  function mainRTLoop() {
    if (myRTSession.started) {
      myRTSession.session.update();

      var data = RTData.get();

      data.setLong(1, numCycles);

      myRTSession.session.sendRTData(1, GameSparksRT.deliveryIntent.RELIABLE, data, []);

      numCycles++;
    }
  }
</script>
</body>
</html>

For the life of me, I have no idea what is happening or how to fix it. The problem pops up when I activate a button that references line 173
function loginResponse(response) { console.log(JSON.stringify(response)); }

But don't let that affect your impartiality. I compared this code to earlier versions of the code I have and could not identify a change in any of my functions.

  • 写回答

1条回答 默认 最新

  • drtppp75155 2017-11-01 20:28
    关注

    Well, bottom line is this: When you are an idiot, don't post questions to stackoverflow. No one will respond. Not because they are mean, but because learning the basics is important.

    So the problem originated for me in the top of my code with this:

            <button onClick='gamesparks.authenticationRequest(username, password, loginResponse)'>Login</button>
    

    Weird, right? Not really. What had done was try to alter the input for the authentication request to match my html element inputs (see where my elements are labeled as username and password?) It didn't work, and I obviously just shelved that and moved on...and forgot. What I did was change "username" to "testuser". This matched the value I was trying to authenticate. Now, my baby is returning values on my testuser, and running like a dream.

    Thanks for the tough love, stackoverflow.

    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么