- 浏览: 1476412 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
只调用ibeacon的接口
加上websocket的接口
websocket的服务端代码,使用tornado
// // ViewController.m // ibb // // Created by xiao7 on 14/12/15. // Copyright (c) 2014年 killinux. All rights reserved. // #import "ViewController.h" @import CoreLocation; @interface ViewController () <CLLocationManagerDelegate> @property NSMutableDictionary *beacons; @property CLLocationManager *locationManager; @property NSMutableDictionary *rangedRegions; @property (nonatomic, copy, readonly) NSArray *supportedProximityUUIDs; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"viewDidLoad------"); self.beacons = [[NSMutableDictionary alloc] init]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; [self.locationManager requestAlwaysAuthorization]; self.rangedRegions = [[NSMutableDictionary alloc] init]; _supportedProximityUUIDs = @[ [[NSUUID alloc] initWithUUIDString:@"E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"], [[NSUUID alloc] initWithUUIDString:@"DDDDDDDD-DDDD-DDDD-AAAA-DDDDDDDDDDDD"] //,[[NSUUID alloc] initWithUUIDString:@"DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD"] ]; for (NSUUID *uuid in _supportedProximityUUIDs) { CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:[uuid UUIDString]]; self.rangedRegions[region] = [NSArray array]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; for (CLBeaconRegion *region in self.rangedRegions) { [self.locationManager startRangingBeaconsInRegion:region]; } } - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { NSLog(@"locationManager--------didRangeBeacons:%d",beacons.count); self.rangedRegions[region] = beacons; [self.beacons removeAllObjects]; NSLog(@"locationManager-begin"); if(beacons.count!=0){ NSArray *allvalue=[self.rangedRegions allValues]; if(allvalue.count==2){ NSArray *regionResult = allvalue[0]; CLBeacon *thisregion = regionResult[0]; //NSLog(@"--%.2f", thisregion.accuracy); NSArray *regionResult2 = allvalue[1]; if(regionResult2.count>0){ CLBeacon *thisregion2 = regionResult2[0]; // NSLog(@"--%.2f", thisregion2.accuracy); if(thisregion.accuracy>0 && thisregion2.accuracy>0){ NSLog(@"%.2f", thisregion2.accuracy-thisregion.accuracy); if((thisregion2.accuracy-thisregion.accuracy)<0){ NSLog(@"left"); }else{ //NSLog(@"%.2f", ABS(thisregion2.accuracy-thisregion.accuracy)); if(ABS(thisregion2.accuracy-thisregion.accuracy)<0.1){ NSLog(@"w"); }else{ NSLog(@"right"); } } } } } } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
加上websocket的接口
// // ViewController.m // ibb // // Created by xiao7 on 14/12/15. // Copyright (c) 2014年 killinux. All rights reserved. // #import "ViewController.h" #import "SocketRocket/SRWebSocket.h" @import CoreLocation; @interface ViewController () <CLLocationManagerDelegate,SRWebSocketDelegate> @property NSMutableDictionary *beacons; @property CLLocationManager *locationManager; @property NSMutableDictionary *rangedRegions; @property (nonatomic, copy, readonly) NSArray *supportedProximityUUIDs; @property (nonatomic, strong) SRWebSocket *mywebSocket; @end @implementation ViewController //NSString *websocket_url = @"ws://haoning.net/webs/websocket/test"; NSString *websocket_url = @"ws://192.168.0.112:8000/chat"; - (void)viewDidLoad { [super viewDidLoad]; //websocket init _mywebSocket.delegate = nil; [_mywebSocket close]; _mywebSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:websocket_url]]]; _mywebSocket.delegate = self; [_mywebSocket open]; NSLog(@"viewDidLoad------"); self.beacons = [[NSMutableDictionary alloc] init]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; [self.locationManager requestAlwaysAuthorization]; self.rangedRegions = [[NSMutableDictionary alloc] init]; _supportedProximityUUIDs = @[ [[NSUUID alloc] initWithUUIDString:@"E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"], [[NSUUID alloc] initWithUUIDString:@"DDDDDDDD-DDDD-DDDD-AAAA-DDDDDDDDDDDD"] //,[[NSUUID alloc] initWithUUIDString:@"DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD"] ]; for (NSUUID *uuid in _supportedProximityUUIDs) { CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:[uuid UUIDString]]; self.rangedRegions[region] = [NSArray array]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; for (CLBeaconRegion *region in self.rangedRegions) { [self.locationManager startRangingBeaconsInRegion:region]; } } - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { NSLog(@"locationManager--------didRangeBeacons:%d",beacons.count); self.rangedRegions[region] = beacons; [self.beacons removeAllObjects]; NSLog(@"locationManager-begin"); if(beacons.count!=0){ NSArray *allvalue=[self.rangedRegions allValues]; if(allvalue.count==2){ NSArray *regionResult = allvalue[0]; CLBeacon *thisregion = regionResult[0]; //NSLog(@"--%.2f", thisregion.accuracy); NSArray *regionResult2 = allvalue[1]; if(regionResult2.count>0){ CLBeacon *thisregion2 = regionResult2[0]; // NSLog(@"--%.2f", thisregion2.accuracy); if(thisregion.accuracy>0 && thisregion2.accuracy>0){ NSLog(@"%.2f", thisregion2.accuracy-thisregion.accuracy); if((thisregion2.accuracy-thisregion.accuracy)<0){ NSLog(@"left"); [_mywebSocket send:@"a"]; }else{ //NSLog(@"%.2f", ABS(thisregion2.accuracy-thisregion.accuracy)); if(ABS(thisregion2.accuracy-thisregion.accuracy)<0.1){ NSLog(@"w"); [_mywebSocket send:@"w"]; }else{ NSLog(@"right"); [_mywebSocket send:@"d"]; } } } } } } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //---------------- //pragma websocket - (void)webSocketDidOpen:(SRWebSocket *)webSocket; { NSLog(@"Websocket Connected"); self.title = @"Connected!"; } - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; { NSLog(@":( Websocket Failed With Error %@", error); _mywebSocket = nil; } - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message; { NSLog(@"websocket Received \"%@\"", message); NSArray *messageArray = [message componentsSeparatedByString:@","]; if(messageArray.count<3){ NSLog(@"error parameter not right:%@",message); // NSDictionary *dict8 = [NSDictionary dictionaryWithObjectsAndKeys:@"haoning",@"name",message,@"content", nil]; // [_resultArray addObject:dict8]; }else{ NSDictionary *dict8 = [NSDictionary dictionaryWithObjectsAndKeys:messageArray[0],@"name",messageArray[2],@"content", nil]; } } - (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean; { NSLog(@"WebSocket closed"); self.title = @"Connection Closed! (see logs)"; _mywebSocket = nil; } @end
websocket的服务端代码,使用tornado
#!/usr/bin/python #coding:utf-8 import os.path import tornado.httpserver import tornado.web import tornado.ioloop import tornado.options import tornado.httpclient import tornado.websocket import json import RPi.GPIO as GPIO import time #GPIO.setwarnings(False) #GPIO.setmode(GPIO.BCM) #GPIO.setup(17,GPIO.OUT) #GPIO.setup(18,GPIO.OUT) #GPIO.setup(22,GPIO.OUT) #GPIO.setup(23,GPIO.OUT) class IndexHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") class SocketHandler(tornado.websocket.WebSocketHandler): """docstring for SocketHandler""" clients = set() @staticmethod def send_to_all(message): for c in SocketHandler.clients: c.write_message(json.dumps(message)) def open(self): # GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(17,GPIO.OUT) GPIO.setup(18,GPIO.OUT) GPIO.setup(22,GPIO.OUT) GPIO.setup(23,GPIO.OUT) self.write_message(json.dumps({ 'type': 'sys', 'message': 'Welcome to WebSocket', })) SocketHandler.send_to_all({ 'type': 'sys', 'message': str(id(self)) + ' has joined', }) SocketHandler.clients.add(self) def on_close(self): SocketHandler.clients.remove(self) SocketHandler.send_to_all({ 'type': 'sys', 'message': str(id(self)) + ' has left', }) def on_message(self, message): if(message == 'w'): GPIO.output(17,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,True) elif(message == 'a'): GPIO.output(17,False) GPIO.output(18,True) GPIO.output(22,False) GPIO.output(23,False) elif(message == 'd'): GPIO.output(17,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,True) elif(message == 's'): GPIO.output(17,True) GPIO.output(18,False) GPIO.output(22,True) GPIO.output(23,False) else: GPIO.output(17,False) GPIO.output(18,False) GPIO.output(22,False) GPIO.output(23,False) SocketHandler.send_to_all({ 'type': 'user', 'id': id(self), 'message': message, }) ##MAIN if __name__ == '__main__': app = tornado.web.Application( handlers=[ (r"/", IndexHandler), (r"/chat", SocketHandler) ], debug = True, # template_path = os.path.join(os.path.dirname(__file__), "templates"), # static_path = os.path.join(os.path.dirname(__file__), "static") ) app.listen(8000) tornado.ioloop.IOLoop.instance().start()
发表评论
-
facebook的socketrocket总结
2018-03-19 13:36 1471最近看了开源的网易的demo https://netease. ... -
ios的页面跳转
2014-12-03 17:30 1380一种通过导航,一种直 ... -
打包ipa
2014-11-14 23:10 7751.新建一个文件夹命名为:Payload 2.将buid生成的 ... -
理解iOS7的Multipeer Connectivity框架
2014-11-13 23:39 918例子可跑 http://www.oschina.net/tr ... -
ios指南针
2014-10-25 17:06 1092参考http://blog.sina.com.cn/s/blo ... -
linux下编译objectc
2014-10-23 01:24 894编译静态库给ios使用 http://www.tuicool. ... -
ios加速计和陀螺仪
2014-10-22 23:03 1247ios设备中有的加速计可以测量出加速度和重力。陀螺仪可用于确定 ... -
ios仿微信的demo
2014-10-20 00:31 2307610月19日闲的蛋疼,做了个 仿微信的聊天工具 git地址:h ... -
自制微信的ui
2014-10-19 22:28 910参考http://ios.9tech.cn/news/2013 ... -
ios8的tableView使用
2014-10-18 20:34 870ios8是main.storyboard 不是 ... -
ios的opencv的helloworld
2014-10-12 23:38 968xcode6, 学习的源码在 http://opencv.or ... -
ios opencv的一些资源
2014-10-11 00:08 806opencv for ios build http://ww ... -
ios客户端websocket的helloworld
2014-10-09 02:11 23187ios8,xcode6 https://github.com/ ... -
ios8的定位,蓝牙与ios7的区别
2014-10-06 23:27 3656以前程序的地理定位功能在iOS8 版上不能工作了(也可能其 ... -
ios的helloworld 2
2014-09-09 21:51 1305参考视频: www.imooc.com/learn/149 S ... -
ios的helloworld
2014-09-08 19:51 708参考http://www.macx.cn/thread-210 ... -
生成ipa 这个是自己总结的,ios5.1.1越狱系统,xcode4.3.3可用
2012-07-29 20:44 1983最有用的一段 export CODESIGN_ALLOCA ... -
ios上使用gcc
2012-07-18 23:21 3249安装network-cmds apptitude iphone ... -
m3u8在windows上预览
2012-06-12 14:25 7023<html> <head> ... -
cocoahttpserver
2012-03-21 22:19 1948https://github.com/robin/cocoa- ...
相关推荐
总的来说,通过在OpenWRT上使用WebSocket,你可以创建一个能够实时交互的智能设备,无论是用于远程控制还是实时数据交换,都能带来更好的用户体验。而这个过程需要对嵌入式系统、网络协议以及C/C++编程有深入的理解...
在实现WebSocket应用时,开发者通常会使用WebSocket库或者框架,例如JavaScript中的`ws`库,它简化了WebSocket的创建和管理。在服务器端,可以使用Node.js的`ws`库,Python的` autobahn`或`websockets`库,Java的`...
在 GitHub 上,有一个名为 android-websockets 的开源项目,该项目使用 Java NIO 库来实现 WebSocket 技术,可以使得开发者可以在 Android 上使用 WebSocket 技术来实现实时通信。该项目提供了一些示例代码,展示了...
在本文中,我们将深入探讨如何使用C++编程语言与WebSocket协议进行交互,特别是在结合Boost库、jsoncpp库和websocketpp库的情况下。这个压缩包提供的代码示例是一个完整的C++ WebSocket客户端或服务器应用,可以直接...
使用WebSocket+SpringBoot搭建简易的多人聊天室 由浅入深,配合博客入门教程文章食用,风味独特。 使用WebSocket+SpringBoot搭建简易的多人聊天室 由浅入深,配合博客入门教程文章食用,风味独特。 使用WebSocket+...
使用WebSocket与ActiveMQ进行交互,首先需要了解WebSocket URL的格式。在描述中提到,WebSocket协议的URL以"ws://"开头,这是非加密的WebSocket连接。如果需要加密传输,可以使用"WSS://",这相当于WebSocket的SSL/...
本篇博客介绍微信小程序中webSocket的使用方法,以及如何用局部网络建立webSocket连接,进行客户端与服务器之间的对话: webSocket简介 微信小程序端API调用 服务器端使用nodejs配置 演示websocket webSocket...
在原生的 Node.js 环境中,我们可以使用 `ws` 这个库来轻松地实现 WebSocket 功能。下面将详细介绍如何在 Node.js 中使用 WebSocket。 首先,你需要安装 `ws` 库。你可以通过 npm(Node.js 包管理器)来进行安装: ...
【SpringBoot+Mybatis-Plus使用webSocket实现一对一聊天后台】的实现主要涉及以下几个关键知识点: 一、WebSocket协议 WebSocket是一种在单个TCP连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交换变...
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Android客户端间实现WebSocket通讯,可以用于构建聊天应用、游戏同步...
本文将深入探讨在ThinkPHP6框架中如何使用Workerman库来实现WebSocket连接,以及相关的技术要点。 首先,`ThinkPHP6` 是一个基于 PHP7 开发的轻量级且强大的国产PHP框架,其核心设计理念是“简洁、实用、快速”。它...
为了使用这些库实现WebSocket功能,你需要在项目中导入这些jar包,并根据WebSocket API创建服务器端的WebSocket端点(实现WebSocketServerEndpointConfig接口)和客户端的WebSocket连接(使用WebSocketClient)。...
总结,WebSocket结合Tomcat可以构建高效的实时通信系统,通过在服务器端定义WebSocket端点类和在客户端使用WebSocket API,可以实现双向数据流,为网页提供实时信息显示功能。在实际开发中,还可以结合其他技术,如...
在本文中,我们将深入探讨如何使用WebSocket技术来实现一个简单的聊天室功能。 首先,我们需要理解WebSocket的核心概念。WebSocket是HTML5的一个重要特性,它通过创建持久性的连接,允许双向通信,即服务器可以主动...
在本文中,我们将深入探讨如何在C++环境中,特别是在Microsoft Foundation Classes (MFC)框架下,使用WebSocket客户端。WebSocket是一种在互联网上实现双向通信的协议,它为实时应用提供了低延迟、高效的通信方式。...
实时聊天应用程序:使用WebSocket实现双向通信
2. **配置WebSocket连接**:在Unity脚本中,使用BestHttp提供的WebSocket类来创建和管理连接。你需要指定WebSocket服务器的URL,并设置相应的连接参数。 3. **建立连接**:调用WebSocket的Open方法来建立与服务器的...
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在任意方向上同时传输。这种技术对于实时性要求高的应用,如在线游戏、聊天室、股票交易、实时数据分析等场景非常...
在uni-app框架中,我们不仅可以使用WebSocket在移动H5环境中,还可以扩展到桌面PC端,实现高效且实时的数据交互。 在uni-app中,WebSocket的使用主要包括以下几个关键步骤: 1. **初始化WebSocket连接**: 在uni-...
它在浏览器端创建一个WebSocket-like的对象,通过这个对象,你可以像使用WebSocket一样使用它,而不用担心浏览器兼容性问题。 最后,`stomp.js`是STOMP协议的JavaScript实现,它提供了简单的API来订阅和发布消息。...