我在服务器上编写了一个基于sails.js的聊天应用程序,所以基本上客户端的所有代码都在localhost上运行。
聊天工作就像一个梦想,但现在我想将所有客户端移动到我的cordova应用程序。
这是我的服务器端代码(socket.js)
onConnect: function(session, socket) {
// By default, do nothing.
console.log('hello');
socket.emit('news', "Welcome to the chat");
socket.on('send message', function(data){
console.log(data);
socket.broadcast.emit('new', data);
sails.sockets.emit(sails.sockets.id(socket),'new', data);
});
},
这是我的客户端(server localhost)聊天文件:
$('#form1').submit(function(e){
e.preventDefault();
io.socket.emit('send message', $('#userText').val());
$('#userText').val('');
});
io.socket.on('news', function (msg) {
console.log(msg);
$('#content').append(msg + '<br />');
});
io.socket.on('new', function(data){
console.log(data);
$('#content').append(data + '<br />');
});
这是请求userCategories API的客户端(服务器localhost):
io.socket.get('http://178.62.83.248:1337/userCategories', function (resData) {
console.log(resData); // => {id:9, name: 'Timmy Mendez'}
});
io.socket.on('usercategories', function(message){
console.log(message);
});
现在这是我在我的cordova客户端上尝试的(index.js):
<script src="lib/sails.io.js/sails.io.js"></script>
<script>
io.sails.url = 'http://178.62.83.248:1337';
io.socket.get('http://178.62.83.248:1337/userCategories', function (resData) {
console.log(resData); // => {id:9, name: 'Timmy Mendez'}
});
io.socket.on('usercategories', function(message){
console.log(message);
});
</script>
这段代码非常奇怪。当应用程序启动时,它会尝试连接到:http://178.62.83.248:1337/__getcookie 然后它失败了?并在控制台中将此消息返回给我:
Socket is trying to reconnect to Sails...
_-|>_- (attempt #1)
Socket is trying to reconnect to Sails...
_-|>_- (attempt #2)
尝试43,44等......
所以我希望有人可以解释一下这是什么意思,我该如何解决这个问题。
答案 0 :(得分:1)
我已经解决了这个问题。发生这种情况的原因是,当您在客户端上安装sails.io文件时,实际上是在安装最新版本。要连接到您的服务器,您需要使用正确版本的sails io.js.在我的情况下,我在服务器上使用了sails 10.5,因此我必须在客户端中包含特定文件