Titanium从1.7开始强化了TCP通信方面的功能。一般大家说的通信都指的是HTTP通信,今天我们使用TCP socket,就可以跟很多的service实现通信。
在socket的同时,Titanium也支持二进制码的操作:
T.Buffer
Ti.Codec
但是稍微有些复杂,HTTP以外的协议也能够使用。
那么我们就尽早的看看socket通信的例子吧。
var win = Ti.UI.createWindow({ title: "Win1" });
var textarea = Ti.UI.createTextArea({value: ''});
win.add(textarea);
win.open();
// 读数据用Buffer
var readBuffer = Ti.createBuffer({length:1024});
// socket部分
var socket;
socket = Ti.Network.Socket.createTCP({
host: "blog.masuidrive.jp",
port: 80,
connected: function(e) { // 连接到socket
textarea.value += ">> Connected to host " + socket.host + "\n";
// 组成要写入的二进制数据
var data = Ti.createBuffer({value:"GET /tmp/test.html HTTP/1.1\r\n"+
"Host: blog.masuidrive.jp\r\n\r\n"});
// 写入到socket
var bytesWritten = socket.write(data);
var bytesRead;
// 循环读取直到结束
while( (bytesRead = socket.read(readBuffer)) >= 0 ) {
// 将读取的二进制转化为字符串
var stringData = Ti.Codec.decodeString({
source: readBuffer, length: bytesRead });
textarea.value += bytesRead + "> " + stringData + "\n";
// 清空读取用Buffer
readBuffer.clear();
}
// 关闭socket
socket.close();
},
closed: function(e) { // socket关闭之后
textarea.value += ">> Socket closed";
}
});
socket.connect();
上边的代码中的socket是同步的。具体socket通信的详细内容这里就不说了,相信在其他的平台上使用过socket的人都能够理解。Titanium官方也有详细的说明,
这里
但是我们在通常的应用中都是采用异步的socket通信。可惜这部分在官方文档中也没有。
异步的socket处理大概是下边这样的:
var win = Ti.UI.createWindow({ title: "Win1" });
var textarea = Ti.UI.createTextArea({value: ''});
win.add(textarea);
win.open();
var socket;
var readBuffer = Ti.createBuffer({length:1024});
// 数据被读入时调用
var readCallback = function(e) {
// 数据完成后关闭socket
if (e.bytesProcessed == -1) { // EOF
textarea.value += ">> Received socket closed\n";
socket.close();
return;
}
// 显示读入的数据
var str = Ti.Codec.decodeString({source:readBuffer, length:e.bytesProcessed});
textarea.value += e.bytesProcessed + "> " + str + "\n";
// 下回读入数据时设定Buffer和回调
Ti.Stream.read(socket, readBuffer, readCallback);
};
socket = Ti.Network.Socket.createTCP({
host: "blog.masuidrive.jp",
port: 80,
connected: function(e) {
// 读入数据时Buffer和回调
Ti.Stream.read(socket, readBuffer, readCallback);
textarea.value += ">> Connected to host " + socket.host + "\n";
// 写入处理
var data = Ti.createBuffer({value:"GET /tmp/test.html HTTP/1.1\r\nHost: blog.masuidrive.jp\r\n\r\n"});
var bytesWritten = socket.write(data);
},
closed: function(e) {
textarea.value += ">> Socket closed";
}
});
socket.connect();
这次在读入数据时,调用了readCallback。使用这样的方法,利用TCP基本所有的协议都能实现通信。
WebSocket协议的一个例子:https://github.com/masuidrive/ti-websocket-client
实时聊天,或者不想上时间保持会话时候,不使用HTTP,而使用WebSocket实现是不错的选择。
【原文】
Titanium Mobileでソケット通信
- 大小: 37.3 KB
分享到:
相关推荐
Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...
使用没有多线程的 java 进行套接字通信的示例。 编译 javac GreetingServer.java javac GreetingClient.java 跑步 *Server:* java GreetingServer *Client:* java GreetingClient <host> 例子 $ java ...
Titanium的Socket.io客户端使用本地Android和iOS客户端的Titanium的模块。要求 Android:Titanium SDK 7.0.0+ iOS:Titanium SDK 7.4.0 + / Xcode 10.2 / Swift 5.0+ :light_bulb: iOS模块是使用Swift 5.0构建的,您...
NULL 博文链接:https://rensanning.iteye.com/blog/1325014
[Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...
Titanium中文版开发手册(翻译版)
Titanium Backup_3.7.4捐赠完全版
TitaniumBackup_6.0.5.1 专业版 可静默恢复
安卓手机系统备软件 第一次使用钛备份的朋友,可以试着...接着按返回键(手机底部四大金刚中的那个返回键)按钮逐层回退,然后选择sdcard-ext/TitaniumBackup即可(没有 TitaniumBackup文件夹的请自行创建一个):
titanium-d1-kickstart.6.1.1.gbin 强大的思科模拟器
钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友! 解锁器使用说明: 1.安装钛...
atom-titanium, 用于 Titanium 合金的Atom 封装 用于 Titanium 合金的 All-in-One封装这是一个用于 Titanium 合金的Atom 封装。$ apm install titanium-alloy冲突&需要通知Alloy 1.8. x
Titanium[1].Backup.Pro.v3.7.2_cnFixed_newkey.apk Titanium[1].Backup.Pro.v3.7.2_cnFixed_newkey.apk
Titanium官方移动终端开发API文档
TiInspector, 通过 Chrome DevTools调试 Titanium Mobile 应用程序 #Ti 检查器Ti检查器允许在 Chrome DevTools web界面中调试 Appcelerator Titanium 应用程序。工具通过将命令和消息转换为 Chrome 调试协议和 ...
这是截至到目前最新的版本(Titanium 2.1 API) 方便没网的情况下,童鞋们翻阅文档。
前端开源库-node-titanium-sdk节点Titanium SDK,Appcelerator Titanium SDK库
针对titanium程序,在启动程序的时候首先应该检查一下网络设置是否正确,假如网络没有打开网络设置,则提示用户打开网络设置,当用户点击打开网络设置的按钮后即转到打开网络设置的地方进行网络设置。
Titanium_ziliao.all about my project
【mac】dvd光盘刻录 Roxio Toast Titanium 17.4.dmg,安装即用