使用SIP协议进行浏览器到浏览器的VoIP通话?

3
我正在尝试从一个浏览器呼叫另一个浏览器。
以下是我所做的:
1. 我设置了我的asterisk服务器,就像getonsip.com一样。 2. 我使用pjsua Python绑定编写了一个客户端,它充当服务器。
以下是情况:
1. 我可以从我的浏览器(我的浏览器与运行pjsua客户端的同一台机器上)拨打到我的Android手机上的SIP客户端。 2. 我无法从另一台机器的浏览器执行相同操作。 3. 我该怎么做才能实现浏览器之间的通话? 4. 是否需要流和Flash才能实现此操作?

你是想说你编写的软件能够发出电话,但无法接收电话吗?请在客户端代码中贴出监听来电的相关部分,我们或许可以提供帮助。 - John Lyon
这是场景:我在本地机器上运行pjsua。我编写了一个Web客户端,当我点击特定的URL时,可以呼叫我的Android SIP客户端。现在我在我的机器上打开另一个浏览器,并使用“foo”帐户进行注册。现在,“bar”已经在另一个浏览器上注册。我可以从“foo”和“bar”呼叫到Android SIP,但无法从“bar”呼叫到“foo”或从“foo”呼叫到“bar”。我正在更新我的问题。 - Tauquir
2个回答

3
你至少需要大量插件魔法才能使用SIP进行浏览器对浏览器的通话。首先,问题在于默认情况下SIP使用UDP端口5060,浏览器沙盒不允许您在该端口上通信,因此您需要一个插件(Flash,Silverlight,Java Applet等)。一旦您克服了SIP方面,并解决了NAT问题,那么您就需要解决如何让浏览器处理RTP媒体流的问题。这将意味着更多的插件。
事实上,有一个即将推出的标准正好涉及到您所需的内容,请参见RTC-WEB。在等待该标准时,您可以尝试使用phono,这是来自Tropo的javascript / flash组件,支持基于浏览器的呼叫,但需要注意的是呼叫将经过Tropo的SIP服务器。

这不是我的链接,但无论如何它对我来说都有效。它只是一个包含有关协议的一些信息的网站,因此如果对您无效,只需在谷歌上搜索即可。 - sipsorcery
但是为什么我的浏览器需要关注端口5060呢?因为我的浏览器将与我的pjsua服务器(sip客户端)通信,而pjsua服务器将通过端口5060与sip通信。 - Tauquir
你只能使用插件从浏览器连接到5060端口。因此,你可以使用Java或类似语言编写浏览器对浏览器的软电话,但实际上你将绕过浏览器,所以为什么不一开始就跳过浏览器呢? - sipsorcery

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接