【问题标题】:How to emit error to be possible catch it on error handler on client-side?如何发出错误以在客户端的错误处理程序上捕获它?
【发布时间】:2016-02-25 14:51:13
【问题描述】:

我需要在我的连接处理程序中发出错误并在客户端捕获它,如下所示:

// 服务器端

var http = require('http');
var sio = require('socket.io');
var app = require('express')();

var server = require('http').createServer(app).listen(3000, function () {
    console.log('Server listening on 3000 port');
});

var io = sio.listen(server);

io.on('connection', function (socket) {
    // Do something and emit error...
    socket.emit('error', new Error('Some error happened'));
});

// 客户端

var socket = io.connect(window.location.origin);
socket.on('error', function () {
   console.log('Never happens...');
});

但问题是服务器端的socket.emit('error', new Error('Some error happend')); 总是抛出错误并且由于this issue 而导致nodejs 服务器崩溃

您能否帮助如何在客户端正确发出错误和处理?

【问题讨论】:

  • "error" 好像是保留的,你为什么不能直接用另一个名字,比如"errorEvent"?
  • @cviejo 我可以,但我需要在错误情况下处理这种情况。 errorEvent 不会触发错误事件处理程序
  • 啊,我明白了。下面的问题也被编辑以回答这个问题

标签: javascript node.js express socket.io socket.io-1.0


【解决方案1】:

服务器

socket.emit('my error', 'Some error happened');

客户

socket.on('my error', function (text) {
   console.log(text);
});

很遗憾,error 是一个保留名称。

如果您需要在客户端捕获它,请使用其他事件名称来通知客户端

// server
socket.on("error", function() {
    socket.emit("my error", "Something bad happened!");
});

// client
socket.on('my error', function (text) {
   console.log(text);
});    

【讨论】:

猜你喜欢
  • 2016-02-23
  • 2018-09-03
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多