[請益]如何設計一個以秒計費且不會被用戶逃漏的方法?

看板Soft_Job (軟體人)作者 (Simon)時間5年前 (2020/05/17 19:49), 5年前編輯推噓11(11045)
留言56則, 27人參與, 5年前最新討論串1/1
討論不限平台,但為了方便說明以下以 Android 為例。 假設有個服務,例如通話、影片等等,每秒鐘要收取 n 元代幣,若用戶代幣不足則立即結束服務。 方案ㄧ: 每秒向 Server 發起 Http 請求進行扣費。 缺點: 請求數可能過多,Server 負載過重。 方案二: Client 紀錄開始時間,當用戶代幣不足或主動結束服務時,計算開始時間與結束時間差再回報給 Server。 缺點: 若用戶主動斷網並清除 APP 資料再重新登入,Client 之前紀錄的時間會不見導致無法得知用戶到底使用多久。 請問有沒有方法可以紀錄用戶使用秒數並確實回報給 Server? ----- Sent from JPTT on my Google Pixel 3. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.187.157 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1589716181.A.8EF.html

05/17 20:06, 5年前 , 1F
服務開始前先去伺服器取餘額計算秒數,在介面執行到這
05/17 20:06, 1F

05/17 20:06, 5年前 , 2F
個秒數就強制結束,這樣如何?
05/17 20:06, 2F

05/17 20:07, 5年前 , 3F
是說,跟錢有關的事情怎樣都不會在客戶端處理吧?很不
05/17 20:07, 3F

05/17 20:07, 5年前 , 4F
保險
05/17 20:07, 4F
如果秒數還沒到之前用戶故意斷網 + 清除資料 這樣 Server 端只有開始時間沒有結束時間, 下次開啟服務可能是好幾小時或明天,不能以這個時間去扣費

05/17 20:09, 5年前 , 5F
開個ws記連線斷線
05/17 20:09, 5F

05/17 20:10, 5年前 , 6F
起迄點都在Server端提供多久的上行服務決定,跟客戶端無關
05/17 20:10, 6F

05/17 20:12, 5年前 , 7F
服務以秒計費,所以服務在取用的時候就要扣了不是嗎?
05/17 20:12, 7F

05/17 20:12, 5年前 , 8F
05/17 20:12, 8F
服務可能是點對點的通話,頂多在開始前通知 Server, 但是結束時間就沒辦法保證可以傳遞給 Server,因為可能被故意斷網 + 清除資料

05/17 20:13, 5年前 , 9F
雖然沒用過,但服務應該也是從server端分發的吧
05/17 20:13, 9F

05/17 20:14, 5年前 , 10F
開ws然後每秒ping pong吧
05/17 20:14, 10F

05/17 20:15, 5年前 , 11F
Websocket
05/17 20:15, 11F

05/17 20:16, 5年前 , 12F
方案二根本不會有問題啊 服務開始的時候用戶id就被記錄
05/17 20:16, 12F

05/17 20:17, 5年前 , 13F
了 就算他清 她下次登入還是要用那個id 然後資料都在
05/17 20:17, 13F

05/17 20:17, 5年前 , 14F
server上面吧
05/17 20:17, 14F
Server 端只有開始時間,結束時間沒辦法保證可以傳遞到 Server ※ 編輯: rum579 (123.0.61.194 臺灣), 05/17/2020 21:19:29 ※ 編輯: rum579 (123.0.61.194 臺灣), 05/17/2020 21:20:25

05/17 21:23, 5年前 , 15F
server決定一切 client只能被動來問還能不能連
05/17 21:23, 15F

05/17 21:31, 5年前 , 16F
ws ping pong server不就知道那時候短線?
05/17 21:31, 16F
WS 考慮方案

05/17 21:33, 5年前 , 17F
基本上client連線問一次server就夠了 剩下的自己思考...
05/17 21:33, 17F
※ 編輯: rum579 (123.0.61.194 臺灣), 05/17/2020 21:33:38

05/17 21:40, 5年前 , 18F
一開始先給十秒 然後client 放個timer 時間內沒有接到se
05/17 21:40, 18F

05/17 21:40, 5年前 , 19F
rver來訊,client就結束應用。心跳包應用。就算被逃也只
05/17 21:40, 19F

05/17 21:40, 5年前 , 20F
有損失十秒
05/17 21:40, 20F

05/17 21:43, 5年前 , 21F
還有,這樣看來你的client有兩方,兩方都去做啊
05/17 21:43, 21F
雙方都做是目前的做法,希望可以再討論其他方案,畢竟雙方都斷網清除資料也是有可能 ※ 編輯: rum579 (42.73.187.157 臺灣), 05/17/2020 21:51:22

05/17 22:17, 5年前 , 22F
會斷網清資料的先解約這個客戶吧
05/17 22:17, 22F

05/17 22:22, 5年前 , 23F
以普通瀏覽器來講斷網清資料還滿常見的。我都習慣定期清c
05/17 22:22, 23F

05/17 22:22, 5年前 , 24F
ache
05/17 22:22, 24F

05/17 22:43, 5年前 , 25F
提高清除後重新下載成本,WS/WSS,服務網格化
05/17 22:43, 25F

05/17 22:47, 5年前 , 26F
通話結束的時候兩個clinet 都發通知給server阿?
05/17 22:47, 26F

05/17 22:48, 5年前 , 27F
兩個都主動斷網會有時間差的
05/17 22:48, 27F

05/17 22:58, 5年前 , 28F
遊戲?
05/17 22:58, 28F

05/17 23:18, 5年前 , 29F
不是server socket send資料時檢驗就好了嗎
05/17 23:18, 29F

05/17 23:28, 5年前 , 30F
只有我覺得都讓client直接互連了還要以秒計費有點坑嗎XD
05/17 23:28, 30F

05/17 23:47, 5年前 , 31F
方案二, 每n分鐘驗證一次, 結束時再傳一次
05/17 23:47, 31F

05/17 23:48, 5年前 , 32F
另外 server 也可不定期的抽檢
05/17 23:48, 32F

05/18 00:22, 5年前 , 33F
websocket
05/18 00:22, 33F

05/18 01:21, 5年前 , 34F
如果不是server持續分發的服務,那我覺得要考慮別種收
05/18 01:21, 34F

05/18 01:21, 5年前 , 35F
費方式了...
05/18 01:21, 35F

05/18 01:26, 5年前 , 36F
把收費計算放在client真的很詭異
05/18 01:26, 36F

05/18 01:40, 5年前 , 37F
把通話內容錄下來就知道幾秒了(誤
05/18 01:40, 37F

05/18 01:42, 5年前 , 38F
影片你不會學動畫瘋嗎
05/18 01:42, 38F

05/18 04:27, 5年前 , 39F
放client的計算只能是輔助 就像身分驗證也是主客端都要做
05/18 04:27, 39F

05/18 04:27, 5年前 , 40F
WebSocket+1
05/18 04:27, 40F

05/18 04:38, 5年前 , 41F
永遠不要"直接"相信client端來的資料
05/18 04:38, 41F

05/18 11:45, 5年前 , 42F
ws
05/18 11:45, 42F

05/18 12:09, 5年前 , 43F
ws
05/18 12:09, 43F

05/18 13:28, 5年前 , 44F
30樓XD,跟我想的一樣
05/18 13:28, 44F

05/18 13:31, 5年前 , 45F
如果都不連server, 為什麼要以秒計費
05/18 13:31, 45F

05/18 14:44, 5年前 , 46F
如果雙方都會斷網清資料大概就不會用你這套軟體通信啦..
05/18 14:44, 46F

05/19 02:53, 5年前 , 47F
你應該找個簡單的做 偏激使用者不要太認真 只要有8成腦殘無
05/19 02:53, 47F

05/19 02:53, 5年前 , 48F
法破解即可 等到破解的人越來越多 你也撈到一筆錢了 在想怎
05/19 02:53, 48F

05/19 02:53, 5年前 , 49F
麼改即可
05/19 02:53, 49F

05/19 13:52, 5年前 , 50F
想了一圈 = = 推樓上.."更"萬全的對策對應增加的成本 是否
05/19 13:52, 50F

05/19 13:53, 5年前 , 51F
有其價值...
05/19 13:53, 51F

05/20 06:04, 5年前 , 52F
client 每次和 server 要個五分鐘 credit,多退少補
05/20 06:04, 52F

05/20 06:05, 5年前 , 53F
這樣只要每五分鐘和 server 連一次,可以嗎?
05/20 06:05, 53F

05/20 06:06, 5年前 , 54F
如果使用者清除資料,就等於直接丟掉剩餘的 credit
05/20 06:06, 54F

05/20 19:33, 5年前 , 55F
樓上想的跟我一樣 不是少補 應該說是要client要預繳下一
05/20 19:33, 55F

05/20 19:33, 5年前 , 56F
個週期的費用 如果資料沒清 有機會退回 多繳的部分
05/20 19:33, 56F
文章代碼(AID): #1UmIJLZl (Soft_Job)
文章代碼(AID): #1UmIJLZl (Soft_Job)