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