WebRTC на кота
Я новичок в технологии WebRtc, и мне нужно реализовать обмен аудио / видео и данными, используя мой собственный сервер Tomcat для передачи сигналов.
Я уже внедрил реализацию mobicents из github ( https://github.com/Mobicents/sip-servlets), но это огромный проект, который не работает должным образом, и у меня нет знаний, чтобы исправить / настроить его.
Я буду рад за некоторые инструкции, как реализовать серверную часть в Java, или, возможно, какой-то рабочий, краткий пример. Конечно, я искал учебники в Интернете, но я не нашел ничего понятного.
редактировать:
Сейчас я пытаюсь запустить демоверсию mobicents websockets-sip-servlet. Я получаю некоторые ошибки в консоли браузера, такие как:
* PrivateJainSipClientConnector:processSipRegisterResponse(): SIP registration failed:500 [object Object]
* GET http://localhost:8080/websockets-sip-servlet/Room/undefined 404 (Not Found)
* POST https://api.xirsys.com/getIceServers 400 (Bad Request)
Я скачал релиз Tomcat 8 с https://mobicents.ci.cloudbees.com/job/MobicentsSipServlets-Release/lastSuccessfulBuild/artifact/.
и трассировка стека из журналов Tomcat:
2015-05-20 14:56:15,891 ERROR [org.mobicents.servlet.sip.core.dispatchers.DispatchTask] (SIP-TCP-Core-PipelineThreadpool-2) Unexpected exception while processing message REGISTER sip:telestax.com SIP/2.0
[...]
org.mobicents.servlet.sip.core.DispatcherException: An unexpected servlet exception occured while routing an initial request
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher$InitialDispatchTask.dispatch(InitialRequestDispatcher.java:744)
at org.mobicents.servlet.sip.core.dispatchers.DispatchTask.dispatchAndHandleExceptions(DispatchTask.java:61)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchInsideContainer(InitialRequestDispatcher.java:454)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchMessage(InitialRequestDispatcher.java:309)
at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:825)
at gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:230)
at gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:185)
at gov.nist.javax.sip.DialogFilter.processRequest(DialogFilter.java:1324)
at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:807)
at gov.nist.javax.sip.stack.ConnectionOrientedMessageChannel.processMessage(ConnectionOrientedMessageChannel.java:452)
at gov.nist.javax.sip.stack.NioWebSocketMessageChannel.processMessage(NioWebSocketMessageChannel.java:287)
at gov.nist.javax.sip.parser.NioPipelineParser$Dispatch.run(NioPipelineParser.java:174)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.servlet.ServletException: the sip servlet with the name WebSocketB2BUASipServlet doesn't exist in the sip application WebsocketSample
at org.mobicents.servlet.sip.core.session.SipSessionImpl.setHandler(SipSessionImpl.java:1317)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher$InitialDispatchTask.dispatch(InitialRequestDispatcher.java:741)
... 14 more
2015-05-20 14:56:15,904 ERROR [org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl] (SIP-TCP-Core-PipelineThreadpool-2) Unexpected exception while processing request REGISTER sip:telestax.com SIP/2.0
[...]
java.lang.IllegalStateException: Cannot create a response for request REGISTER sip:telestax.com SIP/2.0
transaction is null, a final error response has probably already been sent
at org.mobicents.servlet.sip.message.SipServletRequestImpl.createResponse(SipServletRequestImpl.java:309)
at org.mobicents.servlet.sip.message.SipServletRequestImpl.createResponse(SipServletRequestImpl.java:290)
at org.mobicents.servlet.sip.core.dispatchers.MessageDispatcher.sendErrorResponse(MessageDispatcher.java:126)
at org.mobicents.servlet.sip.core.dispatchers.DispatchTask.dispatchAndHandleExceptions(DispatchTask.java:69)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchInsideContainer(InitialRequestDispatcher.java:454)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchMessage(InitialRequestDispatcher.java:309)
at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:825)
at gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:230)
at gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:185)
at gov.nist.javax.sip.DialogFilter.processRequest(DialogFilter.java:1324)
at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:807)
at gov.nist.javax.sip.stack.ConnectionOrientedMessageChannel.processMessage(ConnectionOrientedMessageChannel.java:452)
at gov.nist.javax.sip.stack.NioWebSocketMessageChannel.processMessage(NioWebSocketMessageChannel.java:287)
at gov.nist.javax.sip.parser.NioPipelineParser$Dispatch.run(NioPipelineParser.java:174)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
это не полная трассировка стека
1 ответ
Можете ли вы объяснить, чего именно вы пытаетесь достичь, чтобы вам было легче ориентироваться? Во-первых, было бы проще скачать двоичный файл, чем работать из исходного кода. Поэтому попробуйте использовать более новую версию с https://mobicents.ci.cloudbees.com/job/MobicentsSipServlets-Release/lastSuccessfulBuild/artifact/
Mobicents SIP Servlets и Restcomm использует WebRTComm в качестве клиентской библиотеки Javascript. Эта библиотека позволяет вам использовать простой API, абстрагирующийся от сложностей WebRTC, и использовать SIP Over WebSockets в качестве протокола сигнализации для обмена сообщениями чата или настройки и отключения аудио- и видеозвонков.
По умолчанию RestComm поставляется с клиентом WebRTC, который вы можете использовать и настраивать в соответствии со своими потребностями, см. http://www.telestax.com/livechat-and-video-call-with-restcomm/ или вы можете загрузить более новую версию, работать на https://github.com/Mobicents/olympus и помогать в этом.