node.js - Sailsjs 错误 : Cannot write to response more than once at onlyAllowOneResponse

标签 node.js sockets socket.io sails.js sails.io.js

Sails Controller 为 ajax 请求返回正确的响应,但是当通过 io.socket 调用时它不起作用。

套接字请求:

io.socket.request({ method: 'get', url: '/example-service/', params: {}, headers:{}}, function(body, JWR){ console.log(JWR); })

异常(exception):

Error: Cannot write to response more than once\n    at onlyAllowOneResponse
node_modules/sails/lib/router/res.js:375:11
at MockServerResponse.send_shim [as send]
node_modules/sails/lib/router/res.js:192:7)

浏览器上的套接字响应:

JWR {body: "Not implemented in core yet", headers: Object, statusCode: 501, error: "Not implemented in core yet"}

根据 sailsjs 文档请求/响应将自动处理 websockets。

我是不是漏掉了什么。对于套接字请求,我是否需要以不同的方式发送响应?

最佳答案

异常是因为我使用的是 res.render,如本文档中所述,sails 在 websockets 中不支持它:

http://sailsjs.org/documentation/reference/response-res

通过替换修复了这个问题

res.render 

sails.hooks.views.render

关于node.js - Sailsjs 错误 : Cannot write to response more than once at onlyAllowOneResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871560/

相关文章:

javascript - 运行 Q Promise 并连续获取进度

javascript - 在node/express中构建数据对象并将对象传递给渲染模板

c# - 在发送消息中收到所有数据之前,TCPStream.Read 会阻塞吗?

mongodb - 每五分钟安排一次 Node.js 作业

node.js - 套接字 IO 缩放 : is it more efficient to send messages to specific socket id's?

javascript - 在 PHP 上使用套接字的方式与 Node.js 类似

javascript - 仅在 gulp 中发生更改时构建和注入(inject)文件

javascript - node-red js 中的 HTTP POST

java - NodeJs : how to keep Node server-> Java client connection open

sockets - TIME-WAIT暗杀和SO_REUSEADDR有什么区别