Java SIP 客户端就像 Android 中存在的那样

标签 java servlets

我的要求是使用 java servlet 进行 SIP 注册,然后进行音频调用。在android中我找到了简单的方法Android Supporting SIP但是我无法在java中使用相同的android代码,因为SIP管理器类存在于android.net包中。我应该使用什么让我的用户在 java servlet 中进行 SIP 注册。

下面是android代码

if (sipManager == null) {
 sipManager = SipManager.newInstance(this);
}
SipProfile.Builder builder = null;
try {
 builder = new SipProfile.Builder("7001", "XXX.XXX.X.XXX");
 builder.setPassword("XXX");
 sipProfile = builder.build();
 Intent i = new Intent();
 i.setAction("android.SipDemo.INCOMING_CALL");
 PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
 sipManager.open(sipProfile, pi, null);

 sipManager.setRegistrationListener(sipProfile.getUriString(), new SipRegistrationListener() {
  public void onRegistering(String localProfileUri) {

  }
  public void onRegistrationDone(String localProfileUri, long expiryTime) {

  }
  public void onRegistrationFailed(String localProfileUri, int errorCode,
   String errorMessage) {


  }
 });
} catch (ParseException pe) {
 pe.printStackTrace();

} catch (SipException se) {
 se.printStackTrace();

}

最佳答案

从你的问题中并不清楚你认为这是如何运作的。 Servlet 是服务器端,因此如果 SIP 消息是从服务器发起的,但我怀疑您真正想要的是发起 SIP session ,然后是使用来自客户端的某些实时流协议(protocol)建立的音频流。

有用于 SIP 的 Java API,Sun/Oracle 有一个标准 API,用于使用 SIP 和 IMS 与电信网络集成:https://www.oracle.com/technetwork/java/introduction-jain-sip-090386.html 不确定它们是否仍在维护。

但是,我怀疑这不是您真正需要的。也许您应该看看这个基于 WebRTC 和 SIP 客户端的客户端:

http://www.doubango.org/sipml5/

您的 JSP 将提供此 Javascript 服务,它允许用户启动 SIP session 并建立音频调用。

从他们的文档来看,这似乎很简单:

  SIPml.init(
     function(e){
         var stack =  new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:bob@example.org', password: 'mysecret',
                            events_listener: { events: 'started', listener: function(e){
                                        var callSession = stack.newSession('call-audiovideo', {
                                                video_local: document.getElementById('video-local'),
                                                video_remote: document.getElementById('video-remote'),
                                                audio_remote: document.getElementById('audio-remote')
                                            });
                                        callSession.call('alice');
                                    } 
                                }
                        });
                        stack.start();
                    }
            );

关于Java SIP 客户端就像 Android 中存在的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55965274/

相关文章:

java - 我们可以在 Servlet 中从 destroy() 方法调用 service() 方法吗?

java - servlet 引擎是否在调用 servlet 之前读取整个请求?

java - 编译servlet时找不到该符号

java - 将接口(interface)方法委托(delegate)给各种类

java - 如何从返回字符串的方法终止

java - 使用 Web 界面或任何可视化工具运行 Selenium WebDriver 测试

java - 通过继承隐藏字段

java - 无法在 Jersey 中获取 POST 请求的有效负载

java - URLEncoder 仅对某些 UTF-8 字符进行编码,而不是全部在字符串中

java - Servlet 显示名称已存在