ChatThrottleLib ChatThrottleLib is a small , embeddable library by that keeps outbound chat and addon communication from exceeding the output rate limit in WoW that otherwise causes players to disconnect from the server . It also has a number of features that will help you make your addon communication run smoother ! Benefits of using ChatThrottleLib : ChatThrottleLib does : Communications libraries already using ChatThrottleLib . If you are communicating through these libraries , you do not need to worry about throttling at all . And if you are depending on them / including them , ChatThrottleLib is already there and does not need to be included again ; you can use it directly for regular chat . ChatThrottleLib APIs . ChatThrottleLib : SendChatMessage . ChatThrottleLib : SendChatMessage ( " prio " , " prefix " , " text " , " chattype " , " language " , " destination " [ , " queueName " [ , callbackFn , callbackArg ] ] ) ; The following parameters are the same as the SendChatMessage ( ) API : The following parameters are optional : ChatThrottleLib : SendAddonMessage . ChatThrottleLib : SendAddonMessage ( " prio " , " prefix " , " text " , " chattype " [ , " target " [ , " queueName " [ , callbackFn , callbackArg ] ] ] ) ; The following parameters are the same as the SendAddonMessage ( ) API : The following parameters are optional : Notes on outbound rate . The World of Warcraft servers will disconnect you if you generate too much output . This is not limited to chat output ; any type of output can cause it . Some of you may have noticed that holding down your right mouse button and wiggling it wildly for an extended time can kick you off . In my own testing , I ' ve found that a data rate of 3000 CPS will cause a disconnect if sustained for more than a few seconds . There seems to be an input buffer of something along the lines of 32KBytes serverside . Filling it would be what causes the kick . A total output of 2000 CPS seems safe . ChatThrottleLib will allow bursts of up to 4000 bytes and after that throttle its output to 800 CPS , to allow room for actual game events . This used to be 8000 / 1000 but some servers seem more sensitive than others . See this cosmosui . org forum thread . ChatThrottleLib will also assume that there ' s a 40 - byte overhead associated with sending messages , so if you ' re sending " hi " , it will count as 42 bytes for traffic shaping purposes . It ' s fairly unscientific , I ' m assuming it ' s fair estimate of source + destination + chattype + some envisioned protocol overhead . 40 bytes seems a bit on the high side for sending data , possibly because the sender does not need to be included ( obviously ) , but it seems about right on the receiving end from measuring actual network traffic ( excluding ethernet + IP + TCP headers ) . As of v11 , ChatThrottleLib also assumes that the server - side rate limiter is somewhat cranky shortly after logon and zoning , and only allows a tenth of the normal rate for the first 5 seconds . This is based on observations from PartyQuests , which used to send the entire quest log ( plus texts ) to party members - immediately after login if you are logging in to a player still in a party . It has been seen to cause disconnects on at least one server . Throttling algorithms . There are two types of traffic shaping going on in ChatThrottleLib . Per - stream shaping . Each prefix + chattype ( + destination ) tuple is treated as a separate stream . Streams output is simply round - robined , i . e . they get the same amount of messages per second . Not necessarily the same CPS though . Doing full - out data rate shaping seemed like unnecessary overhead for very little gain . Prioritization . Traffic in the three priorities will be fully data rate shaped so that the net output stays at 800 CPS . Higher priorities do not force lower priority traffic out of the way utterly . In a fully loaded system ( with full output in all priorities ) , each priority gets 1 / 3rd of the available bandwidth . It is fully balanced . Examples of attempted transmit rates and actual output results : See for an illustration of how output in different priorities will be shaped over time . If you would like to see rate changes in action during development , load ChatThrottleStats . lua in your addon . It displays a small string in the top left corner of your screen showing current rate through the library , burst availability , and rate of traffic bypassing the library . FPS based throttling being in effect causes the string to go red . Change Log . v11 . " Aug 25 2006 " v12 . " Sep 14 2006 " v14 . " Apr 4 2007 " v15 . " Apr 8 2007 " v16 . " Apr 14 2007 " v17 . " May 27 2007 " v18 . " Aug 21 2007 " v19 . " Nov 11 2007 " v20 . " Oct 15 2008 " v20 - 30200 . " Aug 5 2009 " v21 . " Aug 7 2009 " v22 and beyond . See http : / / www . wowpedia . org / ChatThrottleLib for newer changes ! How to use ChatThrottleLib . Method 1 : Method 2 : You ' re done , and can now use ChatThrottleLib : SendChatMessage and ChatThrottleLib : SendAddonMessage to send your messages ! The library has built - in checks for if it has already been loaded , and avoids loading again if so . If your addon has a newer version of the library than one that has already been loaded , it will replace the old version . Note that you should never ever take local copies of ChatThrottleLib : SendChatMessage et al , since that prevents proper upgrading , and is likely to cause severe breakage :