我在哪里处理 feathersjs/socketio-client 连接错误
Where do I handle feathersjs/socketio-client connection error
我在后端使用 feathers 和 socketio。客户正在倾听,一切正常。
我想处理 'server not responding' 错误,但找不到在哪里可以处理?
服务器抛出的错误:
"Unhandled promise rejection
Object { type: "FeathersError", name: "Timeout", message: "Timeout of 5000ms exceeded calling find on newsfeed", code: 408, className: "timeout", data: {…}, errors: {}, stack: "FeathersError@webpack-internal:///./node_modules/@feathersjs/errors/lib/index.js:58:19\nTimeout@webpack-internal:///./node_modules/@feathersjs/errors/lib/index.js:135:3\nsend/</timeoutId<@webpack-internal:///./node_modules/@feathersjs/transport-commons/lib/client.js:66:9\n" }"
正确,'promise'没有处理!我在哪里处理?
我尝试在每一行上添加 catch 只是为了看看什么有效但没有成功:
import feathers from '@feathersjs/feathers'
import socketio from '@feathersjs/socketio-client'
import io from 'socket.io-client'
const socket = io('http://localhost:3030/', {transports: ['websocket']});
socket.on("connect_failed", er=>console.error('Error connecting to server: ', er));
const restApi = feathers()
.configure(socketio(socket));
try {
restApi.service('/newsfeed');
restApi.on("connect_failed", er=>console.error('Error connecting to server: ', er));
}
catch (er) {
console.error('Error connecting to server: ', er)
}
export default restApi
超时错误来自特定请求,因此您必须在发出请求的任何地方处理它。
restApi.service('/newsfeed').find()
如果您使用的是 async/await,您可以将您的服务电话包装在 try/catch 中,或者我个人最喜欢的是在电话中挂断电话;
// try/catch
try {
const response= await restApi.service('/newsfeed').find();
catch(e) {
// handle e
}
//just use catch
const response= await restApi.service('/newsfeed').find().catch(e => {
// handle e
});
如果您使用 promises,只需使用 catch:
restApi.service('/newsfeed').find().then(response => {
// handle response
}).catch(e => {
// handle e
});
我在后端使用 feathers 和 socketio。客户正在倾听,一切正常。
我想处理 'server not responding' 错误,但找不到在哪里可以处理?
服务器抛出的错误:
"Unhandled promise rejection
Object { type: "FeathersError", name: "Timeout", message: "Timeout of 5000ms exceeded calling find on newsfeed", code: 408, className: "timeout", data: {…}, errors: {}, stack: "FeathersError@webpack-internal:///./node_modules/@feathersjs/errors/lib/index.js:58:19\nTimeout@webpack-internal:///./node_modules/@feathersjs/errors/lib/index.js:135:3\nsend/</timeoutId<@webpack-internal:///./node_modules/@feathersjs/transport-commons/lib/client.js:66:9\n" }"
正确,'promise'没有处理!我在哪里处理?
我尝试在每一行上添加 catch 只是为了看看什么有效但没有成功:
import feathers from '@feathersjs/feathers'
import socketio from '@feathersjs/socketio-client'
import io from 'socket.io-client'
const socket = io('http://localhost:3030/', {transports: ['websocket']});
socket.on("connect_failed", er=>console.error('Error connecting to server: ', er));
const restApi = feathers()
.configure(socketio(socket));
try {
restApi.service('/newsfeed');
restApi.on("connect_failed", er=>console.error('Error connecting to server: ', er));
}
catch (er) {
console.error('Error connecting to server: ', er)
}
export default restApi
超时错误来自特定请求,因此您必须在发出请求的任何地方处理它。
restApi.service('/newsfeed').find()
如果您使用的是 async/await,您可以将您的服务电话包装在 try/catch 中,或者我个人最喜欢的是在电话中挂断电话;
// try/catch
try {
const response= await restApi.service('/newsfeed').find();
catch(e) {
// handle e
}
//just use catch
const response= await restApi.service('/newsfeed').find().catch(e => {
// handle e
});
如果您使用 promises,只需使用 catch:
restApi.service('/newsfeed').find().then(response => {
// handle response
}).catch(e => {
// handle e
});