Socket.io 延伸

项目正好用到了即时通讯功能,于是研究到了webSocket技术,后来发现了可以在web、[Android]、[iOS]上同时使用的解决方案,那就是SocketIO。其实现原理啥的不做介绍了,直接贴上IOS项目可能会用到的一些资源。

首先是官网:http://socket.io/这个大家都不会陌生吧~~

1、官方推荐的Android项目:http://socket.io/blog/native-socket-io-and-android/

github上的相应地址为:https://github.com/nkzawa/socket.io-android-chat

2、官方推荐的IOS--Swift项目:http://socket.io/blog/socket-io-on-ios/

github上的相应地址为:https://github.com/socketio/socket.io-client-swift

另外如果你需要oc版本的,可以参考这里:socket.io v0.7.2 — 0.9.x for iOS and OS X https://github.com/pkyeck/socket.IO-objc

3、官方推荐的C++项目:http://socket.io/blog/socket-io-cpp/

github上的相应地址为:https://github.com/socketio/socket.io-client-cpp

另外还有一个匿名的聊天室可以让你测试用:http://chat.socket.io/
// 关于配置的那些坑 及 WebSocket开发的原理

由于IOS端官网只有介绍Swift的代码,如果需要使用到OC版就需要在github下载非官方的版本,在与后台的各种折腾中,终于发现非官方的OC版本配置不兼容后台的需求,重新换了Swift官方版本才行,在OC项目中桥接Swift文件即可。

后台采用workman开源推送机制,将消息即时发送到客户端,原理和WebViewJavascriptBridge类似,据了解微信也是使用这种机制,只是框架可能有所不同,由于后台是开源服务器,所开发的难度并不大,只是时间成本的问题;

// 在使用key值时,需要与后台进行对应配置,

// 如下是指发送消息 根据“group chat” key值去指向服务器所对应的方法,将数据传递过去

socket.on("group chat") { (dataArray, socketAck) -> Void in

var messageDictionary = [String: AnyObject]()

print("group chat dataArray = %@",dataArray)

let messageDict = dataArray[0];

messageDictionary["username"] = messageDict["username"]

messageDictionary["message"] = messageDict["message"]

print("messageDictionary = %@",messageDictionary)

completionHandler(messageInfo: messageDictionary)

}

// 如下是监测服务器的通知 根据“disconnect” key值去调用所需要处理的对应方法即可

在配置的使用过程中,采用统一形式的回调Block形式即可,方法非常简洁,有问题欢迎留言

参考链接:

0.http://www.infoq.com/cn/news/2015/01/socket-io-websocket

1.http://www.jianshu.com/p/a7757baf3bad
2.http://www.imooc.com/article/3453

3.http://www.jianshu.com/p/f643d74e6732

时间: 2024-08-27 12:13:49

Socket.io 延伸的相关文章

socket.io与sticky-session, 多个socket.io实例带来的问题

websocket的出现使得从服务器向浏览器推送数据更加容易.但是低版本的浏览器不支持websocket,这时socket.io出现了. 使用socket.io的应用在支持websocket的浏览器运行的时候使用websocket,而在低版本的浏览器中则使用传统的方式与服务器交互(例如long-polling及其他的方式). long-polling的应用实现方式是这样的,客户端向服务器端发起请求,服务器端不会马上返回,而是保持这个连接直到服务器需要推送信息给客户端时,才返回给客户端数据.客户端

socket.io对IE8的支持

默认下载了最新版的socket.io,版本号是1.7.2,对IE8的支持不好,反正在IE8下收发消息都不行.在网上查了很多资料,都解决不了IE8的问题,崩溃. 最后用了一个大家比较认可的版本1.0.6,可以支持IE8: 卸载socket.io npm uninstall socket.io 安装1.0.6版本的socket.io npm install [email protected] 后面的一些版本没有一一的去试,下了一个1.3.7版本的,还是可以支持收发消息的,只是发现IE8在关闭窗口时,

Socket.IO初探

建立Server //server.jsvar io = require('socket.io')(80); var chat = io .of('/chat') //设定命名空间 .on('connection', function (socket) { socket.emit('a message', { //这个只会发送给自己的socket that: 'only' , '/chat': 'will get' }); chat.emit('a message', { //全局发送 ever

【socket.io研究】0.前提准备

WebSocket出现之前,web实时推送,一般采用轮询和Comet技术(可细分为长轮询机制和流技术两种),需要大量http请求,服务器受不了.HTML5定义了WebSocket协议,基于TCP协议,由通讯协议和编程API组成,在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通讯的能力. 建立WebSocket连接的过程是浏览器首先发起一个http请求,在请求头中附带着“Upgrade: WebSocket”头信息,表名申请协议升级,服务器解析后产生应答信息,服务器与客户端的W

【socket.io研究】2.小试牛刀

1.建立个项目,也就是文件夹,这里使用testsocket 2.创建文件package.json,用于描述项目: {     "name":"testsocket",     "version":"0.0.1",     "description":"my first nodejs app",     "dependencies":{         "ex

使用Node.js的socket.io模块开发实时web程序

首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统的学习而更能理解.然后发现了Node.js中的socket.io这个模块,又觉得跟前几天用.net做客户端的socket游戏了.技术世界,兜兜转转,相逢一笑,疑是故人. socket.io用来做实时web程序,解决之前的B/S程序只有无状态连接,特定需求还需要用长连接这种“奇技淫巧”的问题.当然,这是html

node+express+socket.io制作一个聊天室功能

首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js 1 var http=require("http"); 2 var express=require("express"); 3 var sio=require("socket.io"); 4 5 var app=express(); 6 app.use(express.static(__dirname+

[Node.js] Level 6. Socket.io

6.2 Setting Up socket.io Server-Side So far we've created an Express server. Now we want to start building a real-time Q&A moderation service and we've decided to use socket.io. Using the http module, create an new http server and pass the expressapp

nodejs socket.io

今天练习使用nodejs socket.io实现聊天室功能 已经做到功能: 1.自己发送信息在聊天室里出现: 2.自己的信息显示"我:",其他人的信息显示其id: 3.进入退出聊天室会有系统提醒: 想做的功能: 1.根据id进行1对1的聊天: 2.创建组进行小范围讨论: 3.在bootstap里找个好看的prompt弹窗: 经验总结: 1.nodejs 中 express跟http的关系似乎像 jq和js一样,express可以替代http var express = require(