从客户端连接到基于 sails 的服务器
Connect from a client to a sails based server
我正在尝试使用库 sails.io 从我的 cordova 客户端连接到基于 sails 的服务器。
这是我的客户代码:
<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<script src="lib/angular-socket-io/socket.js"></script>
<script src="lib/angular-sails/src/ngSails.js"></script>
<script src="lib\socket.io-client\socket.io.js"></script>
<script src="lib/sails.io.js/sails.io.js"></script>
<script type="text/javascript">
io.sails.useCORSRouteToGetCookie = false;
io.sails.url = 'http://178.62.83.248:1337/';
</script>
当我打开浏览器时出现此错误:
Socket is trying to reconnect to Sails...
_-|>_- (attempt #1)
sails.io.js:136
Socket is trying to reconnect to Sails...
_-|>_- (attempt #2)
它一直在尝试重新连接(它不会停止)。
我已经使用 socket.io 在我的服务器上建立了聊天,但那是在本地,所以我很确定它与 cors 有关。
同样的问题,我有一个 运行 很好的 sailsjs 服务器,只是想将一个 node.js 应用程序连接到它。我尝试了根据 sails.js 网站链接找到的以下代码 here,我得到了相同的响应。
我认为它可能来自 socket.io-客户端版本,因为 npm 列表建议 sails 使用 socket.io 的 0.9.17 版本,而我使用 1.3.2.
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
// Instantiate the socket client (`io`)
// (for now, you must explicitly pass in the socket.io client when using this library from Node.js)
var io = sailsIOClient(socketIOClient);
// Set some options:
// (you have to specify the host and port of the Sails backend when using this library from Node.js)
io.sails.url = 'http://localhost:1337';
// ...
// Send a GET request to `http://localhost:1337/hello`:
io.socket.get('/', function serverResponded (body, JWR) {
// body === JWR.body
console.log('Sails responded with: ', body);
console.log('with headers: ', JWR.headers);
console.log('and with status code: ', JWR.statusCode);
// When you are finished with `io.socket`, or any other sockets you connect manually,
// you should make sure and disconnect them, e.g.:
io.socket.disconnect();
// (note that there is no callback argument to the `.disconnect` method)
});
您的问题可能是您的 Sails 版本与 sails.io.js 版本不匹配。当您使用 sails generate new
生成 Sails v0.10.5 应用程序时,它会为您提供适当版本的 sails.io.js。但是,如果您只是 npm install sails.io.js
,您将获得最新版本,该版本旨在使用 Socket.io 1.0 与即将发布的 Sails v0.11 版本配合使用。
这里最简单的事情就是下载 Sails 将使用的文件,您可以获得 here。
我正在尝试使用库 sails.io 从我的 cordova 客户端连接到基于 sails 的服务器。 这是我的客户代码:
<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<script src="lib/angular-socket-io/socket.js"></script>
<script src="lib/angular-sails/src/ngSails.js"></script>
<script src="lib\socket.io-client\socket.io.js"></script>
<script src="lib/sails.io.js/sails.io.js"></script>
<script type="text/javascript">
io.sails.useCORSRouteToGetCookie = false;
io.sails.url = 'http://178.62.83.248:1337/';
</script>
当我打开浏览器时出现此错误:
Socket is trying to reconnect to Sails...
_-|>_- (attempt #1)
sails.io.js:136
Socket is trying to reconnect to Sails...
_-|>_- (attempt #2)
它一直在尝试重新连接(它不会停止)。 我已经使用 socket.io 在我的服务器上建立了聊天,但那是在本地,所以我很确定它与 cors 有关。
同样的问题,我有一个 运行 很好的 sailsjs 服务器,只是想将一个 node.js 应用程序连接到它。我尝试了根据 sails.js 网站链接找到的以下代码 here,我得到了相同的响应。
我认为它可能来自 socket.io-客户端版本,因为 npm 列表建议 sails 使用 socket.io 的 0.9.17 版本,而我使用 1.3.2.
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
// Instantiate the socket client (`io`)
// (for now, you must explicitly pass in the socket.io client when using this library from Node.js)
var io = sailsIOClient(socketIOClient);
// Set some options:
// (you have to specify the host and port of the Sails backend when using this library from Node.js)
io.sails.url = 'http://localhost:1337';
// ...
// Send a GET request to `http://localhost:1337/hello`:
io.socket.get('/', function serverResponded (body, JWR) {
// body === JWR.body
console.log('Sails responded with: ', body);
console.log('with headers: ', JWR.headers);
console.log('and with status code: ', JWR.statusCode);
// When you are finished with `io.socket`, or any other sockets you connect manually,
// you should make sure and disconnect them, e.g.:
io.socket.disconnect();
// (note that there is no callback argument to the `.disconnect` method)
});
您的问题可能是您的 Sails 版本与 sails.io.js 版本不匹配。当您使用 sails generate new
生成 Sails v0.10.5 应用程序时,它会为您提供适当版本的 sails.io.js。但是,如果您只是 npm install sails.io.js
,您将获得最新版本,该版本旨在使用 Socket.io 1.0 与即将发布的 Sails v0.11 版本配合使用。
这里最简单的事情就是下载 Sails 将使用的文件,您可以获得 here。