Webpack + Angular2 + Simplewebrtc 错误集合

原创整理,转载请注明出处。

 

1.

【错误】

webpack -p编译时产生下面的错误。webpack编译时没有问题。

ERROR in polyfills.bundle.js from UglifyJs

TypeError: Cannot read property 'sections' of null

【原因】

插件(new webpack.optimize.UglifyJsPlugin())和命令行参数 --opimize-minimize (or -p) 导致重复加入两次UglifyJsPlugin。去掉UglifyJsPlugin插件或者去掉命令行参数 -p 。

 

【参考】

https://github.com/webpack/webpack/issues/1385

 

2.

【错误】

socket.io连接之后画面迁移回来之后,不能建立socket.io连接

【原因】

socket.io内部保存连接。迁移到别的画面之后,无效的socket连接还是保存在socket.io内部。所以再次回到这个画面之后,调用的是之前的已经无效的连接。

【解决方法】

在生成socket.io时传参数forceNew: true,socket.io就会重新建立连接。

另外,simplewebrt 生成 socket.io 时的参数是 config.socketio(socketioconnection.js),所以service 生成simplewebrtc时设定参数的时候,socket.io相关的参数要放在config.socketio{}里(socket.io连接的URL要放在外面)

        var config: any = {

            。。。。。。

            url: 'https://NNN.com:3000/chat', // socket.io url

            socketio: { // socket.io连接参数

                path: '/',

                transports: ['websocket', 'polling'],

                forceNew: true // 重新建立连接

            },

            。。。。。。

        };

       this.simpleWebRtc =  new SimpleWebRTC(config);

 

【参考】

  1. https://github.com/andyet/SimpleWebRTC
    SimpleWebRTC构造函数的说明
  2. https://socket.io/docs/client-api/#io-url-options
    创建新的socket.io的连接

 3.

【错误】

创建socekt.io服务器,端口是4000。

用Tomcat集群配置的服务,访问socket.io的时候,提示握手超时错误。Tomcat的监视窗口显示[org.apache.catalina.tribes.io.XByteBuffer.append Discarded the package, invalid header]错误。

【原因】

Tomcat集群,各个worker之间的通信Port是4000,socket.io服务的端口跟这个重复了。

Tomcat集群的worker通信端口配置待查

4.

【Apache反向代理WSS】

HTTPS和WSS在同一个server的时候,通过Apache反向代理

5.

【错误】

Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().

【参考】

1.https://stackoverflow.com/questions/37136077/how-do-i-prevent-the-error-uncaught-in-promise-domexception-the-play-reque

2.http://www.cnblogs.com/bleachli/p/6265878.html

6.

【错误】

关闭共享桌面之后,再次启动桌面共享的时候,没有反应(或者说执行停止共享桌面的程序)

if (this.simpleWebRtc.getLocalScreen()) {  // 问题出在这里

    simpleWebRtc.stopScreenShare();

}

【原因】

simpleWebRtc.stopScreenShare方法里,调用webrtc(localmedia)方法stopScreenShare的时候,没有给stream参数,导致在localmedia里没有把localScreens数组清空。

【解决】

在业务侧直接清空localScreens数组

webRtc.localScreens = [];

7.

【错误】

通过Turnserver服务器进行P2P通信的时候,有代理的终端发生错误。

【原因】

【解决】

待查。

参照:

<https://github.com/coturn/coturn/wiki/turnserver>

TURN connection with Proxy

8.

【WebRTC调试】

Chrome:chrome://webrtc-internals/

Firefox:about:webrtc

猜你喜欢

转载自stef.iteye.com/blog/2381839
今日推荐