我有一个基本的前端(html、css、jquery),我想使用sails.io.js 与API 服务器进行通信(使用sails 开发,启用cors)。API 在 localhost:10000 上运行,但稍后它将在另一个域上,而不是 webclient 上的域。
直接从 jquery,我可以向这个 API 发出一些获取请求并获得预期的结果。
谈到websocket,我有一些问题......在index.html(只是为了测试)中,我放了以下内容:
<script src="js/sails.io.js"></script>
<script type="text/javascript">
io.sails.url('http://localhost:10000');
io.socket.get('/data', function serverResponded (body, sailsResponseObject) {
// body === sailsResponseObject.body
console.log('Sails responded with: ', body);
console.log('with headers: ', sailsResponseObject.headers);
console.log('and with status code: ', sailsResponseObject.statusCode);
});
</script>
但是 Chrome 的开发者工具告诉我
ReferenceError: io is not defined
任何想法 ?
更新
我正在使用 web 服务器 (python -m SimpleHTTPServer) 为 index.html 提供服务,
我已经使用 bower 安装了sails.io.js。
我试图使这个测试尽可能简单:
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<script src="bower_components/sails.io.js/dist/sails.io.js"></script>
<script src="index.js"></script>
</body>
</html>
index.js:
window.onload=function(){
io.sails.url = 'http://localhost:10000';
io.socket.get('http://localhost:10000/data', function (body, response) {
console.log('Sails responded with: ', body);
});
};
我的sails (0.9.16) API 仅在 GET /data 路由上返回一个 json 对象。
我在 api 中实现了一个虚拟的 __getcookie 函数:
'get /__getcookie': function(req, res, next){
res.json({ok: 123});
}
并在interpret.js 中评论了第481 行(Scott 评论如下)。
我还修改了 config/socket.js :
authorization: false,
=> 我现在可以从我的 API 的 /data 路由中得到结果 :)
但是......在每个请求上我都有以下错误:
error: Error: No valid session available from this socket.