GetNetworkStats: Difference between revisions
Jump to navigation
Jump to search
(Created page with "__NOTOC__ {{Server client function}} This function returns network status information. {{New feature|3.0110|1.1| Available in 1.1 and onwards }} ==Syntax== <section name="Clien...") |
mNo edit summary |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
{{Server client function}} | {{Server client function}} | ||
This function returns network status information. | This function returns network status information. | ||
==Syntax== | ==Syntax== | ||
<section name="Client" class="client" show="true"> | <section name="Client" class="client" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
table getNetworkStats() | table getNetworkStats ( ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
<section name="Server" class="server" show="true"> | <section name="Server" class="server" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
table getNetworkStats(element | table getNetworkStats ( [ element thePlayer = nil ] ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
===Optional Arguments=== | |||
*'''thePlayer:''' The player you want to retrieve network stats from. | |||
===Returns=== | ===Returns=== | ||
Returns a table of network information: | Returns a table, the indexes in the table are the following: | ||
* '''bytesReceived''' - Total number of bytes received since the connection was started | |||
* '''bytesSent''' - Total number of bytes sent since the connection was started | |||
* '''packetsReceived''' - Total number of packets received since the connection was started | |||
* '''packetsSent''' - Total number of packets sent since the connection was started | |||
* '''packetlossTotal''' - (0-100) Total packet loss percentage of sent data, since the connection was started | |||
* '''packetlossLastSecond''' - (0-100) Packet loss percentage of sent data, during the previous second | |||
* '''messagesInSendBuffer''' | |||
* '''messagesInResendBuffer''' - Number of packets queued to be resent (due to packet loss) | |||
* '''isLimitedByCongestionControl''' | |||
* '''isLimitedByOutgoingBandwidthLimit''' | |||
* '''encryptionStatus''' | |||
==Example== | |||
<section name="Client" class="client" show="true"> | |||
This example outputs the local players network status information to their console when using the /netstatus command | |||
<syntaxhighlight lang="lua"> | |||
function netStatus() | |||
for index, value in pairs(getNetworkStats()) do | |||
outputConsole(index..": "..value) | |||
end | |||
outputChatBox("Network status output to console", 0, 255, 0) | |||
end | |||
addCommandHandler("netstatus", netStatus) | |||
</syntaxhighlight> | |||
This example outputs a warning to local player if packet loss occured in the last second | |||
<syntaxhighlight lang="lua"> | |||
function packetLossCheck() | |||
local loss = getNetworkStats()["packetlossLastSecond"] | |||
if (loss > 0) then | |||
outputChatBox("Packet loss detected when communicating with server, gameplay may be affected", 255, 0, 0) | |||
end | |||
end | |||
setTimer(packetLossCheck, 1000, 0) | |||
</syntaxhighlight> | |||
This example tracks the average and peak packetloss over the last 60 seconds '''PLEASE NOTE:''' this example is untested. | |||
<syntaxhighlight lang="lua"> | |||
PACKETLOSS_HISTORY_LENGTH = 60 -- Sample period in seconds | |||
packetlossHistory = {} | |||
packetlossAvg = 0 -- (Output) Average packet loss over last 60 seconds | |||
packetlossPeak = 0 -- (Output) Peak packet loss over last 60 seconds | |||
function samplePacketLoss() | |||
table.insert( packetlossHistory, getNetworkStats().packetlossLastSecond ) | |||
while( #packetlossHistory > PACKETLOSS_HISTORY_LENGTH ) do | |||
table.remove( packetlossHistory, 1 ) | |||
end | |||
packetlossAvg = 0 | |||
packetlossPeak = 0 | |||
for _,value in ipairs(packetlossHistory) do | |||
packetlossAvg = packetlossAvg + value | |||
packetlossPeak = math.max( packetlossPeak, value ) | |||
end | |||
packetlossAvg = packetlossAvg / #packetlossHistory | |||
end | |||
setTimer(samplePacketLoss,1000,0) | |||
</syntaxhighlight> | |||
</section> | |||
==See Also== | ==See Also== | ||
{{Client_utility_functions}} | {{Client_utility_functions}} |
Latest revision as of 02:10, 11 April 2012
This function returns network status information.
Syntax
Click to collapse [-]
Clienttable getNetworkStats ( )
Click to collapse [-]
Servertable getNetworkStats ( [ element thePlayer = nil ] )
Optional Arguments
- thePlayer: The player you want to retrieve network stats from.
Returns
Returns a table, the indexes in the table are the following:
- bytesReceived - Total number of bytes received since the connection was started
- bytesSent - Total number of bytes sent since the connection was started
- packetsReceived - Total number of packets received since the connection was started
- packetsSent - Total number of packets sent since the connection was started
- packetlossTotal - (0-100) Total packet loss percentage of sent data, since the connection was started
- packetlossLastSecond - (0-100) Packet loss percentage of sent data, during the previous second
- messagesInSendBuffer
- messagesInResendBuffer - Number of packets queued to be resent (due to packet loss)
- isLimitedByCongestionControl
- isLimitedByOutgoingBandwidthLimit
- encryptionStatus
Example
Click to collapse [-]
ClientThis example outputs the local players network status information to their console when using the /netstatus command
function netStatus() for index, value in pairs(getNetworkStats()) do outputConsole(index..": "..value) end outputChatBox("Network status output to console", 0, 255, 0) end addCommandHandler("netstatus", netStatus)
This example outputs a warning to local player if packet loss occured in the last second
function packetLossCheck() local loss = getNetworkStats()["packetlossLastSecond"] if (loss > 0) then outputChatBox("Packet loss detected when communicating with server, gameplay may be affected", 255, 0, 0) end end setTimer(packetLossCheck, 1000, 0)
This example tracks the average and peak packetloss over the last 60 seconds PLEASE NOTE: this example is untested.
PACKETLOSS_HISTORY_LENGTH = 60 -- Sample period in seconds packetlossHistory = {} packetlossAvg = 0 -- (Output) Average packet loss over last 60 seconds packetlossPeak = 0 -- (Output) Peak packet loss over last 60 seconds function samplePacketLoss() table.insert( packetlossHistory, getNetworkStats().packetlossLastSecond ) while( #packetlossHistory > PACKETLOSS_HISTORY_LENGTH ) do table.remove( packetlossHistory, 1 ) end packetlossAvg = 0 packetlossPeak = 0 for _,value in ipairs(packetlossHistory) do packetlossAvg = packetlossAvg + value packetlossPeak = math.max( packetlossPeak, value ) end packetlossAvg = packetlossAvg / #packetlossHistory end setTimer(samplePacketLoss,1000,0)
See Also
- createTrayNotification
- downloadFile
- getDevelopmentMode
- getKeyboardLayout
- getLocalization
- isShowCollisionsEnabled
- isShowSoundEnabled
- isTransferBoxAlwaysVisible
- isTransferBoxVisible
- isTrayNotificationEnabled
- setClipboard
- setDevelopmentMode
- setTransferBoxVisible
- setWindowFlashing
- showCol
- showSound
- Shared
- addDebugHook
- base64Decode
- base64Encode
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace