私の質問は次のとおりです。私は、バイタル サイン センサーからデータを取得して遠隔医療サーバーに送信するモバイル アプリケーションに取り組んでいるので、医師はプロットされた曲線としてリアルタイムでサーバーからデータを取得できます。 .
私はこれについて非常に弱い背景を持っているので、私の質問は2つの部分からなります.彼らは計画を立てましたか、それとも不可能ですか?繰り返しますが、私はこれについて弱い背景を持っているので、非常に具体的にしてください:)
私の質問は次のとおりです。私は、バイタル サイン センサーからデータを取得して遠隔医療サーバーに送信するモバイル アプリケーションに取り組んでいるので、医師はプロットされた曲線としてリアルタイムでサーバーからデータを取得できます。 .
私はこれについて非常に弱い背景を持っているので、私の質問は2つの部分からなります.彼らは計画を立てましたか、それとも不可能ですか?繰り返しますが、私はこれについて弱い背景を持っているので、非常に具体的にしてください:)
ZingChart では、次の 2 つの方法でこれを行うことができます。
方法 1 - Websockets 経由 - 例: http://www.zingchart.com/dataweek/presentation/feed.html
websocket トランスポートは更新/フィード セクションの一部であり、その属性は次の場所にあります: ZingChart JSON ドキュメントのグラフ >> 更新セクション。さらに、サーバー ソケット コンポーネントが必要であり、クライアント ソケットとの接続とトランスポートを可能にするために、いくつかの標準プロトコルに従う必要があります。
具体的に取得するには:
###############################
# NodeJS code
###############################
#!/usr/bin/env node
var WebSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function(request, response) {
response.writeHead(404);
response.end();
});
server.listen(8888, function() {
console.log((new Date()) + ' Server is listening on port 8888');
});
wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
function originIsAllowed(origin) {
return true;
}
wsServer.on('request', function(request) {
if (!originIsAllowed(request.origin)) {
request.reject();
console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.');
return;
}
var type = '',
method = '',
status = 0;
var connection = request.accept('zingchart', request.origin);
connection.on('message', function(message) {
function startFeed() {
console.log('start feed');
status = 1;
if (method == 'push') {
sendFeedData();
}
}
function stopFeed() {
console.log('stop feed');
status = 0;
}
function sendFeedData() {
if (method == 'push') {
var ts = (new Date()).getTime();
var data = {
"scale-x": ts,
"plot0": [ts, parseInt(10 + 100 * Math.random(), 10)]
};
console.log('sending feed data (push)');
connection.sendUTF(JSON.stringify(data));
if (status == 1) {
iFeedTick = setTimeout(sendFeedData, 500);
}
} else if (method == 'pull') {
var data = [];
var ts = (new Date()).getTime();
for (var i = -5; i <= 0; i++) {
data.push({
"scale-x": ts + i * 500,
"plot0": [ts + i * 500, parseInt(10 + 100 * Math.random(), 10)]
});
}
console.log('sending feed data (pull)');
connection.sendUTF(JSON.stringify(data));
}
}
function sendFullData() {
var data = {
type: "bar",
series: [{
values: [
[(new Date()).getTime(), parseInt(10 + 100 * Math.random(), 10)]
]
}]
};
console.log('sending full data');
connection.sendUTF(JSON.stringify(data));
if (status == 1) {
if (method == 'push') {
setTimeout(sendFullData, 2000);
}
}
}
if (message.type === 'utf8') {
console.log('************************ ' + message.utf8Data);
switch (message.utf8Data) {
case 'zingchart.full':
type = 'full';
break;
case 'zingchart.feed':
type = 'feed';
break;
case 'zingchart.push':
method = 'push';
break;
case 'zingchart.pull':
method = 'pull';
break;
case 'zingchart.startfeed':
startFeed();
break;
case 'zingchart.stopfeed':
stopFeed();
break;
case 'zingchart.getdata':
status = 1;
if (type == 'full') {
sendFullData();
} else if (type == 'feed') {
sendFeedData();
}
break;
}
}
});
connection.on('close', function(reasonCode, description) {
status = 0;
console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
});
});
###############################################
# Sample JSON settings for socket transport
###############################################
refresh: {
type: "feed",
transport: "websockets",
url: "ws://198.101.197.138:8888/",
method: "push",
maxTicks: 120,
resetTimeout: 2400
}
or
refresh: {
type: "feed",
transport: "websockets",
url: "ws://198.101.197.138:8888/",
method: "pull",
interval: 3000,
maxTicks: 120,
resetTimeout: 2400
}
方法 2 - API 経由 - 例: http://www.zingchart.com/dataweek/presentation/api.html
あなたが説明した場合、これには、サーバーからデータを取得する時間間隔を設定し、そのデータを API 経由で渡すことが含まれます。ZingChart ドキュメントの API-Methods セクションの「Feed」セクションを確認してください。