CNode

异步错误如何捕获, websocket,

Lly1234444发布于14 年前最后回复14 年前1 回复15373 浏览0 收藏

新建一个websocket连接,它本身有on open ,on message, on close ,等方法. 程序执行时好像不会在这里停留等待完全准备好,假设在代码之后有一个console.log('after ....') 程序先打印after...然后执行on open 里面的代码,这样导致如果打印语句换成nodejsManagerWS .send('test');会报错 not open.

如果建立连接失败程序会直接报错然后退出. 程序设计时应该怎么处理这种结构,是的连接失败的错误能捕获,且如果连接不上,不让打印提示信息 after....

function connect2NodejsManager(nodejsManagerAddress) { var nodejsManagerWS = new WebSocket(nodejsManagerAddress, {protocolVersion: 8, origin: 'http://websocket.org'}); nodejsManagerWS.on('open', function() { try { // 上报统计信息 reportStatisticInfo(); } catch (err) { console.log('与nodejsManager建立连接时上报本进程的服务端口时发生异常!错误堆栈信息:'+err.stack); } }); nodejsManagerWS.on('message', function(data, flags) { try { // 调用处理模块处理消息 processNodejsManagerMessage(nodejsManagerWS,JSON.parse(data)); } catch (err) { console.log(err.stack); } }); nodejsManagerWS.on('close', function() { nodejsManagerWS = null; }); return nodejsManagerWS; }

console.log('after ....')

查看回复

回复 (1)

L
ly1234444#1·14 年前

额,自己顿悟了,可以加入一个 on error 函数,就可以避免直接错误退出.

参与回复
登录后即可参与回复。登录