nh = next hop, 下一跳,有下面这些 key:
-
$nh(u) - uri (lower case u)
-
$nh(U) - username (upper case u)
-
$nh(d) - domain
-
$nh(p) - port (lower case p)
-
$nh(P) - transport protocol (upper case p)
有什么作用呢?
考虑下面这个场景:
JSSIP 注册到 Kamailio
JSSIP 呼叫 Kamailio,应答
JSSIP 跟 Kamailio 之间的 WSS 链接断开了(可能因为某种原因),JSSIP 会在 2 秒之后自动注册
Kamailio 准备发 BYE 给 JSSIP,正常情况下是发不到的,因为找不到以前的wss连接,那怎么办呢?
我们可以修改 DLGURI 的路由块:
route[DLGURI] {
if ($nh(p) =~ "ws") {
lookup("location", "$dlg_var(user)");
xnotice("$ci|lookup=$rc|$du|$ru\n");
route(RELAY);
return;
}
if (!isdsturiset()) {
handle_ruri_alias();
}
return;
}
本文仅仅给一个思路,切勿原文照抄,多查文档多做练习多思考,方为上策