android中存在类似Java SIP的客户端
我的要求是使用Javaservlet进行SIP注册,然后进行音频调用。在android中,我找到了一个简单的方法,但是我不能在java中使用相同的android代码,因为在android.net包中存在SIP管理器类。我应该使用什么让我的用户在Javaservlet中进行SIP注册 下面是android代码android中存在类似Java SIP的客户端,java,servlets,Java,Servlets,我的要求是使用Javaservlet进行SIP注册,然后进行音频调用。在android中,我找到了一个简单的方法,但是我不能在java中使用相同的android代码,因为在android.net包中存在SIP管理器类。我应该使用什么让我的用户在Javaservlet中进行SIP注册 下面是android代码 if (sipManager == null) { sipManager = SipManager.newInstance(this); } SipProfile.Builder buil
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会话,然后是使用来自客户端的实时流协议建立的音频流 SIP有Java API,Sun/Oracle有一个标准API,用于使用SIP和IMS与电信网络集成: 不确定它们是否仍在维护中 然而,我怀疑这不是你真正需要的。也许您应该看看这个基于客户端的WebRTC和SIP客户端: 您的JSP将服务于此Javascript,它允许用户启动SIP会话并建立音频调用 从他们的文档来看,这似乎很简单:
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();
}
);
使用Javaservlet是什么意思?servlet是服务器端的,客户端将如何从服务器进行音频调用?我有一个jsp页面,可以对servletsYes进行ajax调用,但是您认为这实际上是如何工作的呢?如果servlet发送信号从服务器发起呼叫,那又怎么样?首先是SIP注册,由类似jsp的用户填写他们的客户端详细信息,我们必须进行SIP注册,一旦完成,我们就可以进行SIP VOIP。毕竟,它是一种基于SIP的语音通话通信。我也在发布有问题的android代码。android是基于客户端的。它在客户机的设备上运行,因此非常简单。servlet正在另一个网络上的服务器上运行。SIPml演示正在抛出一个错误SIPml api.js?svn=252:1 WebSocket连接到“ws://ns313841.ovh.net:14060/”失败:连接建立错误:net::ERR_connection_拒绝。它是可用的吗?我无法在演示页面中向它注册SIP客户端。我不知道它的稳定性。。。您可以随意寻找其他SIP客户端,但您需要的是基于浏览器的解决方案,即HTML5/Javascript解决方案。您确定可以访问主机和端口吗?这个错误似乎是不言自明的,主机在该端口上无法访问(或者端口号错误,或者某些防火墙正在停止连接等)。拒绝连接是一条套接字错误消息,因此与库的稳定性无关。这不是我的服务器ip和端口。我认为它们是错误的或无法访问的。我尝试此测试主机是否在端口14060上侦听:
telnet ns313841.ovh.net 14060
,我得到了连接到ns313841.ovh.net的。无法在端口14060上打开到主机的连接:连接失败
。您也可以在PC上尝试验证。ns313841.ovh.net 14060不是我的服务器,它在那里。我需要做一些服务器端配置吗?我只需要一个客户,这样就可以注册并打电话了。出于测试目的,我有我的sip域名、用户名和密码,我正在输入这些信息,这些信息将得到验证,但不会对我的另一个帐户进行语音呼叫