我写了一个关于socket.io的非常简单的演示并且我使用phonegap打包它。我发现有问题。在我打开我的应用程序大约十秒后,由于xhr轮询错误,连接将断开连接。如果我在断开连接事件中刷新页面,则错误不会再次出现。 我使用1.2.0版本。这是我的代码。我已经简化了它。
服务器:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
io.sockets.on('connection', function (socket) {
console.log("disconnect--"+socket.id+"--"+io.sockets.server.eio.clientsCount);
socket.on('disconnect', function () {
console.log("disconnect--"+io.sockets.server.eio.clientsCount);
});
});
http.listen(80, function () {
console.log("server statrt");
});

客户端:
$(document).ready(function () {
var socket = io("http://192.168.0.106:80");
socket.on('connect', function () {
alert("connect");
});
socket.on('error', function (data) {
alert(data);
});
socket.on('disconnect', function () {
alert("disconnect");
});
socket.on("reconnect", function () {
alert("reconnect");
})
});

感谢help.my英语不是很好
答案 0 :(得分:2)
当触发deviceready事件时,您必须打开socket.io连接。
document.addEventListener('deviceready', function() {
var socket = io("http://192.168.0.106:80");
socket.on('connect', function() {
alert("connect");
});
socket.on('error', function (data) {
alert(data);
});
socket.on('disconnect', function () {
alert("disconnect");
});
socket.on("reconnect", function () {
alert("reconnect");
});
});
答案 1 :(得分:0)
对于使用Google Chrome的用户,FYI Chrome不会触发'deviceready'
。相反,您应该使用'DOMContentLoaded'
。