Hello,
I'm exploring the evapi module for my kamailio to interface with an
external node.js app for third party stuff like AAA, billing engine tasks,
notifications and so on. I followed and took some ideas from the rtjson and
evapi tutorial found here(
http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs) to build the
node.js app consuming events.
When I stress tested the scenario using SIPp and tried sending a lot of
events at 300-350cps from Kamailio, I noticed that at times the client is
receiving 2-3 events in a single message together although I do
event_sync_relay once per SIP message received and have netstrings enabled.
I believe this is a typical behavior of TCP and needs to be handled by the
client using some kind of Netstring handler. Please correct me if I'm wrong.
And hence I'd like to know what particularly needs to be taken care of
while writing a client that is listening for events on raw tcp socket and
how does kamailio handle this situation while receiving messages over TCP
socket?? Does kamailio recognize the end of netstring properly on
evapi:message-received and give exactly one message to take care of on
every "message-received" event or should that be handled in the script
somewhere !!
I also referred cgrates client over evapi example which is written in GO,
but I couldnt find them handling TCP streams clearly either.
I'd really appreciate some expert suggestion here to make an informed
decision on using the evapi module for a large scale solution.
Thanks,
- Jayesh