chop-tree


实时砍树

<h1>WebSocket API 文档</h1> <h2>概述</h2> <p>本文档介绍了基于Socket.IO实现的WebSocket API,用于处理用户砍树、能量恢复的游戏逻辑。</p> <h2>连接认证</h2> <p>每次Socket连接时,API会检查认证令牌。</p> <h3>认证过程</h3> <ul> <li>客户端连接时,必须在握手的请求头中提供JWT令牌。</li> <li>若验证成功,将获取用户ID并继续连接,否则会返回认证错误。</li> </ul> <h2>API 接口</h2> <h3>连接 (<code>connection</code>)</h3> <p>建立连接后,服务器会执行如下逻辑:</p> <ul> <li><strong>检查现有连接</strong>:若用户已在其他设备上登录,之前的连接将被断开。</li> <li><strong>初始化能量恢复</strong>:自动开始能量恢复,每秒恢复用户的能量。</li> </ul> <h3>用户信息 (<code>user_info</code>)</h3> <ul> <li><strong>事件名称</strong>:<code>user_info</code></li> <li><strong>描述</strong>:当用户连接时,服务器会向客户端发送用户的当前状态信息,有数据更新时会实时更新</li> <li><strong>返回参数</strong>: <ul> <li><code>energy</code>: 当前能量值</li> <li><code>balance</code>: 当前余额</li> <li><code>maxEnergy</code>: 最大能量上限</li> <li><code>energyRecoveryRate</code>: 能量恢复速率</li> <li><code>energyCostPerTree</code>: 每次砍树消耗的能量</li> <li><code>treeCutReward</code>: 砍树奖励</li> <li><code>isMiningPetActive</code>: 是否有挖矿宠物</li> <li><code>lv</code>: 用户等级</li> </ul></li> </ul> <h3>砍树 (<code>tree_cutting</code>)</h3> <ul> <li><strong>事件名称</strong>:<code>tree_cutting</code></li> <li><strong>描述</strong>:请求砍树,服务器将根据用户能量计算奖励。</li> <li><strong>请求参数</strong>: <ul> <li><code>count</code>: 砍树的次数(整数,必须大于0)。</li> </ul></li> <li><strong>返回参数</strong>: <ul> <li>若成功,服务器将更新用户信息并通过<code>user_info</code>事件返回最新状态。</li> <li>若失败,服务器将通过<code>error</code>事件返回错误信息,例如&quot;能量不足,无法砍树&quot;。</li> </ul></li> </ul> <h3>断开连接 (<code>disconnect</code>)</h3> <ul> <li><strong>事件名称</strong>:<code>disconnect</code></li> <li><strong>描述</strong>:用户断开连接后,服务器将停止用户的能量恢复逻辑,并清除用户连接记录。</li> </ul> <h2>示例代码</h2> <p>客户端可以通过以下方式连接Socket.IO服务器,并进行认证:</p> <pre><code class="language-javascript">import io from &amp;quot;socket.io-client&amp;quot;; const socket = io(&amp;quot;https://chop-api.jpegonapechain.meme&amp;quot;, { auth: { token: &amp;quot;YOUR_JWT_TOKEN&amp;quot;, }, }); socket.on(&amp;quot;connect&amp;quot;, () =&amp;gt; { console.log(&amp;quot;Successfully connected to the server&amp;quot;); }); socket.on(&amp;quot;user_info&amp;quot;, (info) =&amp;gt; { console.log(&amp;quot;User Info:&amp;quot;, info); }); socket.emit(&amp;quot;tree_cutting&amp;quot;, { count: 5 }); socket.on(&amp;quot;error&amp;quot;, (errorMessage) =&amp;gt; { console.error(&amp;quot;Error:&amp;quot;, errorMessage); }); socket.on(&amp;quot;disconnect&amp;quot;, (reason) =&amp;gt; { console.log(socket.id); // undefined console.log(socket.connected); // false console.log(&amp;quot;reason&amp;quot;, reason); }); socket.on(&amp;quot;connect_error&amp;quot;, (error) =&amp;gt; { console.error(error); // socket.auth.token = &amp;quot;abcd&amp;quot;; // socket.connect(); }); </code></pre>

页面列表

ITEM_HTML