gpt4 book ai didi

安卓网页交互

转载 作者:行者123 更新时间:2023-11-30 02:40:42 26 4
gpt4 key购买 nike

假设有两个安卓设备和一个网页。

在每台设备上都有一个按钮被点击,网页显示累计点击次数。

是什么让这成为可能?android 设备是否将该数据发送到 sql 数据库并且该计数器正在读取该数据库中当前的内容?或者设备真的可以将信息发送到页面中吗?

最佳答案

设备可以将数据传送到服务器或客户端代码。然后您必须决定如何处理这些数据。如果您将它发送到客户端代码,那么它只会在一台设备上更新,而将它发送到服务器将允许在每台设备上进行一次点击计数器。

在服务器端更改页面会增加缓存问题。所以你可能想要一个数据文件,只是一个 json 或服务器每次收到另一个点击时覆盖的东西。

虽然速度不是很快,但会导致用户之间出现同步问题。对于标准 html 页面的初学者,客户端代码负责对服务器的调用,因此我们必须定期检查服务器以查看值是否已更改(比如每 5 秒一次)。

更快的替代方法是使用网络套接字。客户端将保持与服务器的连接打开并监听来自服务器的更新,从而消除了我们定期检查的需要。此外,套接字可用于将点击发送到服务器,服务器可以将值保存在内存中,从而无需写入文件。

Node.js 可以从 http://nodejs.org 下载这是我用于网络套接字的插件 https://github.com/Worlize/WebSocket-Node .

下面是一个简单的网络套接字服务器的一些服务器端代码,该服务器将来自 1 个用户的消息鹦鹉学舌地发送给所有用户,包括发送它的用户。

var connections = [];
var WebSocketServer = require('websocket').server;
var http = require('http');

var server = http.createServer(function(request, response) {
// process HTTP request. Since we're writing just WebSockets server
// we don't have to implement anything.
});
server.listen(1337, function() { });

// create the server
wsServer = new WebSocketServer({
httpServer: server
});

// WebSocket server
wsServer.on('request', function(request) {

//got a new user requesting a connection, so lets accept and store them
var connection = request.accept(null, request.origin);
connections.push(connection);

connection.on('message', function(message) { //inbound message
if (message.type === 'utf8') {
// process WebSocket message
send(message.utf8Data); //bounce to everyone else
console.log(message);
}
});
});

setInterval(function(){console.log(connections.length +" :users");},5000);
//every 5 seconds, tell us how many users we have

function send(message){
var i = connections.length;
while(i--)
connections[i].send(message);
//send the message to all users
}

客户端示例

<html><head><script>
var connection, connIsActive = false;
// if user is running mozilla then use it's built-in WebSocket
window.WebSocket = window.WebSocket || window.MozWebSocket;

connection = new WebSocket('ws://127.0.0.1:1337');

connection.onopen = function () {
// connection is opened and ready to use
connIsActive = true;
console.log('Connection loaded');
};

connection.onerror = function (error) {
// an error occurred when sending/receiving data
connIsActive = false
console.log('error');
};

connection.onmessage = function (message) {
// handle incoming message
console.log(message.data);

};
function send(message){
if(connIsActive)connection.send(message);
}
</script></head></html>

将第一个 fragment 保存为“myserver.js”(或类似的)并通过命令行在节点中启动它。将第二个 fragment 保存为“client.html”并在 2 个设备或仅 2 个浏览器实例上打开它。客户端上没有接口(interface),但您可以使用 send("message string")

从调试控制台发送和接收消息

只要您能全神贯注于我的代码 fragment ,将其修改为像您的示例一样工作应该会相当容易!

关于安卓网页交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com