• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > Nodejs长连接服务器iOS端报错ErrorDomain=GCDAsyncSocketErrorDomainCode=7

Nodejs长连接服务器iOS端报错ErrorDomain=GCDAsyncSocketErrorDomainCode=7

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了Nodejs长连接服务器iOS端报错ErrorDomain=GCDAsyncSocketErrorDomainCode=7等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Nodejs长连接服务器iOS端报错 Error Domain=GCDAsyncSocketErrorDomain Code=7
描述:

我用node.js 写了一个长连接服务, 当收到客服端数据后返回一条成功消息,然后用tcp keepalive 保持连接.需求要求客户端一直连上, 但目前的情况是在iOS 端连上一段时间就断开了并在iOS端收到的错误如下:

Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo={NSLocalizedDescription=Socket closed by remote peer}

服务器代码:

var net = require('net');
var netKeepAlive = require('net-keepalive');
var redis = require('redis'); 
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
    // In this case its a socket server
    net.createServer(function (sock) {

        sock.setTimeout(10*1000);
        //IMPORTANT: KeepAlive must be enabled for this to work 
        sock.setKeepAlive(true, 1000); 
        // Set TCP_KEEPINTVL for this specific socket 
        netKeepAlive.setKeepAliveInterval(sock, 1000);
        // and TCP_KEEPCNT 
        netKeepAlive.setKeepAliveProbes(sock, 1);

        sock.on('timeout',function(){
            console.log((new Date()) + 'timeout');

        });

       
        console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort);

       
        // 为这个socket实例添加一个"data"事件处理函数
        sock.on('data', function (data) {
            console.log((new Date()) + ': DATA ' + sock.remoteAddress + ': ' + data );
            //测试阻塞
            // sleep(20000); 
            console.log((new Date()) + ': DATA ' + sock.remoteAddress + ': ' + data );

            sock.write('{ "msg": "成功", "code": "200" }');
        });

        // 为这个socket实例添加一个"close"事件处理函数
        sock.on('close', function (data) {
            console.log((new Date()) + ': CLOSED By: ' + sock.remoteAddress + ' ' + sock.remotePort);
        });

        // 为这个socket实例添加一个"error"事件处理函数, 结束后会触发 close
        sock.on('error', function (data) {
        });

        // 为这个socket实例添加一个"end"事件处理函数, 结束后会触发 close
        sock.on('end', function (data) {
        });

    }).listen(PORT, HOST);
}

解决方案1:

sock.setTimeout(10*1000);
        //IMPORTANT: KeepAlive must be enabled for this to work 
        sock.setKeepAlive(true, 1000); 
        // Set TCP_KEEPINTVL for this specific socket 
        netKeepAlive.setKeepAliveInterval(sock, 1000);
        // and TCP_KEEPCNT 
        netKeepAlive.setKeepAliveProbes(sock, 1);

此处设置的时间太短会产生这样的问题, 因为服务器端若有一次不稳定就主动断开了.


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 ios针对某个View一段时间没有接收到用户的相应执行事件
  • 2017-06-05 tableHeaderView不响应用户触摸事件
  • 2017-06-05 iOS-UIButton按住后松开不执行UIControlEventTouchUpInside
  • 2017-06-05 iOS远程推送ios客户端推送注册失败
  • 2017-06-05 适配iOS7,给WKWebView做了一个分类,然后另外一个类有使用分类中方法,对于iOS7及以下的系统做适配,应该怎么做?
  • 2017-06-05 有关ios产品类型和开发者帐号的难题
  • 2017-06-05 想把2个tableview竖着放在scrollview上
  • 2017-06-05 知之为知之不知为不知是知也类似知乎的赞赏功能,的开发流程
  • 2017-06-05 swift进行属性传值,穿过去的值为空怎么解决?
  • 2017-06-05 一个textView里面的内容高度明明比textview小,却还是会滑动的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 超碰vip账号获取器如何获取UIWebview中超链接的位置
    • 呢图网图库图片设计ios图库选取图片用七牛上传
    • 研讨会通知收到通知后点击通知会执行哪个方法?
    • 自己app如何把坐标地址传给高德导航并打开高德导航app
    • 求一个JAVA代码,转换成OC的代码,打印机上用。
    • 怎么刷新页面IOS表格刷新以后为什么页面会上下的不规则移动
    • 七牛云ios端tokenWithScope函数的定义
    • 小白自学iOS第一天遇到问题,求大神解答
    • category重写系统方法的调用顺序是怎么样的?
    • UIViewController的PopToRootViewController时候发生了什么

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有