使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的jar(如果已经引入可以忽略): pom.xml中加入: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</v…
前言 这是我的毕业设计.刚开始确定这个课题的时候是因为以前有稍微研究过一些XMPP协议,在这个基础上做起来应该不难.然后开始选技术的时候还有半年,我想为什么不从更底层做起呢!那就不用XMPP,当时接触过相关的即时通讯技术还有WebSocket,那为什么直接从更底层的Socket开始封装呢服务端就用Go语言吧,用来做IM服务器和HTTP服务器都很好. 技术选型 既然是基于Socket,iOS端我并不准备中C语言的Socket开发封装起,而是使用一个第三方库CocoaAsyncSocket.XMPP…
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech ​即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等方方面面:从消费金额来看,往往单次消费额度较大:对目的地的陌生.在行程中可能的问题,这些因素使用户在购买前.中.后都存在和商家沟通的强烈需求.可以说,一个好用的 IM 可以在一定程度上对企业电商业务的 GMV 起到促进作用. 本文我们将结合马蜂窝旅游电商 IM 服务的发展历程,重点介绍基于 Go 的…
.net平台 基于 XMPP协议的即时消息服务端简单实现 昨天抽空学习了一下XMPP,在网上找了好久,中文的资料太少了所以做这个简单的例子,今天才完成.公司也正在准备开发基于XMPP协议的即时通讯工具所以也算是打一个基础吧!如果你还没有了解过XMPP请先阅读附录中链接的文章,本实例是基agsXMPP上开发的,agsXMPP是C#写的支持开源XMPP协议软件,我们可以在agsXMPP上快速构建自已的即时通讯平台,我的这个例子只是修改了服务器端,因为agsXMPP本身自带的服务器端没有实现聊天功能.…
Gsoap 编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现, 从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多. 用gsoap开发web service的大致思路 我们开发webservice应用,大致有两个方向: 1.  API接口固定,不关心底层的通讯,将SOAP作为应用层协议 此时,我们先定义接口,编写好.h文件,运行soapcpp2生成出相应的代码,对服务器端,修改XXXService文件,实现业务逻辑,对客户端,修改XXXProxy文件,实现业务逻辑.…
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. 文件相关所有接口都需要提供有效的Access token.不支持View token. 方式一:普通文件流上传 请求地址:PUT https://file.bimface.com/upload 说明:使用普通文件流上传,不支持表单方式:文件流需要在request body中传递. 参数: 内容类型(…
系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE 所有的 RESTful API 都有对应的鉴权机制保护,目前 BIMFACE 支持两种鉴权方式: Access token 代表自身应用的身份,使用应用的 appkey, secret,通过调用/oauth2/token接口获取. View token 代表对单个模型/集成模型/模型对比的访问权限,…
系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken>中详细介绍了应用程序访问API的令牌凭证.我们知道 Access token 代表自身应用的身份,使用应用的 appkey, secret,通过调用/oauth2/token接口获取.BIMFACE所有的接口调用都需要传递 Access token . 本篇主要介绍 ViewToken. View token 代表对单个模型/集成模型/模型对比的访问权…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一个模型文件中的内容.而在工程项目模型设计的过程中,通常由多个设计师协同设计,不同的设计师负责不同的专业领域(例如建筑.结构.水电等).如果想要在云端浏览整个项目工程,就需要把这些组成部分集成起来一起展示.更近一步,如果要在集成的模型之上进行业务集成的话,就要求在集成过程中对构件按单体,楼层,专业,构…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流程退回到设计单位,设计单位人员根据审查意见重新调整设计,调整完成后再次提交到审查专家.此时为了便于专家审查,需要知道当前轮次的模型/图纸与上一轮次的模型/图纸发生了哪些异动,针对异动情况进行审查即可. 先看效果 效果如上图.左侧是当前审查轮次的模型,中间是上一轮次的模型,右侧是2个模型的对比产生的异…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口模型对比的功能. BIMFACE官方文档提供的三维模型对比接口同样也适用于二维CAD图纸对比.下图中是官方提供的对比示例程序. 其中新增的图元使用绿色标记.修改的图元使用黄色标记.删除的图元使用红色标记. 下面介绍BIMFACE图纸对比功能的原理与实现. 图纸对比可以对两个图纸文件进行差异性分析,确定两个图纸…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一个.dwg文件中包含多个图框,如下图 那么当前版本与历史版本对比完成后,在Web网页中点击差异项可以自动定位到图元变化所在位置.是否可以知道差异项来自哪个图框呢? 这篇博客针对该问题进行详细的讲解. 图纸拆分应用场景与效果 1.应用场景      一个.dwg文件中包含多个图框,在BIMFACE中浏览时,可以…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 服务端API之图纸拆分>中介绍了单文件多图框的拆分与对比 本文将详细讲解如何计算图纸对比差异项来源自哪个图框. 以控制台中的2张图纸[建筑图纸1-已拆分.dwg] 与 [建筑图纸2-已拆分-已变更.dwg]为例 对比结果参考上面第2个动态图. 获取图纸对比结果API 调用BIMFACE服务端接口 1…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数据包 离线数据包是存储在BIMFACE公有云服务器上的,所以使用之前需要将其下载到本地.本文将介绍通过接口下载离线数据包的操作过程. 获取离线数据包下载地址 调用接口的实现代码 1 /// <summary> 2 /// 获取数据包下载地址 3 /// </summary> 4 ///…
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用.    XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测.它在促进服务器之间的准即时操作.这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同.XMPP的技术来自于Jabber,其实它是 Jabber的核心协定,所以XMPP有时被误称为Jabber协议…
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务器及BIMFACE后台的分布式存储系统中.文件上传成功后,BIMFACE的服务会返回与该文件相关的信息,如下图: 开发者在成功上传了文件并获得相关文件信息后,可以将信息保存到数据库中供后续的业务开发使用. 除此之外,BIMFACE平台还提供了单独的服务用于获取文件信息.获取文件信息列表.获取文件上传的状态信息…
系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/files 说明:根据多种查询条件获取文件详细信息列表,支持分页 参数: 请求 path(示例):https://file.bimface.com/files 请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b&…
系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE控制台上传文件,上传过程及结束后它会自动告诉你文件的上传状态,目前有三种状态:uploading,success,failure.即上传中.上传成功.上传失败. 如果是通过调用服务接口来上传文件,上传结束后也可以再调用BIMFACE提供的“获取文件上传状态信息”接口来查询状态. 下面详细介绍如何获取文件上传状态信息. 请求地址:GET https://file.bimface.com/files/{fileId}/uploa…
系列目录     [已更新最新开发文章,点击查看详细] BIMFACE最核心能力之一是工程文件格式转换.无需安装插件,支持数十种工程文件格式在云端转换,完整保留原始文件信息.开发者将告别原始文件解析烦恼,数据抽取全部自动完成.BIMFACE目前能够解析38种常见工程图纸和模型,具体包括:rvt.rfa.rte.skp.nwd.nwc.ifc.dwg.dxf.3dm.stl.dgn.stp.3ds.obj.dae.ply.fbx.dwf.gmp.gtj.gbq.gcl.ggj.gqi.gdq.gj…
系列目录     [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供了“获取文件下载链接”的服务接口.下面详细介绍其使用方法. 请求地址:GET https://file.bimface.com/download/url 说明:应用通过该接口获取文件的下载地址,然后下载文件.下载地址有效时间是5分钟. 参数: 请求 path(示例):https://file.bim…
系列目录     [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,如果不再需要该文件,则可以通过BIMFACE平台提供的“源文件删除”服务接口删除具体的文件.下面详细介绍其使用方法. 请求地址:DELETE https://file.bimface.com/file 说明:根据文件ID删除文件 参数: 请求 path(示例):https://file.bimface.com/file?fileId=1418750515413120 请求 header…
系列目录     [已更新最新开发文章,点击查看详细] 上一篇<C#开发BIMFACE系列13 服务端API之获取转换状态>中介绍了根据文件ID查询单个文件的转换状态. 本文介绍批量获取转换状态详情. 请求地址:POST https://api.bimface.com/translateDetails 说明:应用发起转换以后,可以根据筛选条件,通过该接口批量查询转换状态详情 参数: 请求 path(示例):https://api.bimface.com/translateDetails 请求…
系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列12 服务端API之文件转换>中详细介绍了7种文件转换的方法.发起源文件/模型转换后,转换过程可能成功也可能失败.那么在这种情况下就需要查询源文件/模型的转换状态.一共有三种方式可以知道转换是否成功. 第一种:调用文件转换接口 https://api.bimface.com/translate,该接口的返回结果中包含转换结果信息. 第二种:调用文件转换接口 https://api.bimface.com/tr…
系列目录     [已更新最新开发文章,点击查看详细] 在上一篇<C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表>中介绍了获取单文件(模型)的所有构建ID列表.每个构建由多种材质组成,本文介绍获取单个构建ID的材质列表. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/elements/{elementId}/materials 说明:根据单个构建ID获取其所有材质 参数: 请求 path…
系列目录     [已更新最新开发文章,点击查看详细] 本篇主要介绍如何获取单文件/模型下单个构建的属性信息. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/elements/{elementId} 说明:支持查询模型属性重写后构件的属性,需要设置请求参数includeOverrides的值为true 参数: 请求 path(示例):https://api.bimface.com/data/v2/files/12112233820…
系列目录     [已更新最新开发文章,点击查看详细] 在前几篇博客中介绍了一个三维文件/模型包含多个构建,每个构建又是由多种材质组成,每个构建都有很多属性.不同的构建也有可能包含相同的属性. 上图中可以看到构建1与构建2拥有相同的属性2,构建2与构建n拥有相同的属性1. 本文主要介绍如何获取多个构建的共同属性. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/commonElementProperties 说明:若传入的eleme…
系列目录     [已更新最新开发文章,点击查看详细] 一个文件/模型中可能包含多个楼层信息,获取楼层信息对于前端页面的动态展示非常有帮助.本篇介绍获取一个文件/模型中可能包含多个楼层信息的详细方法. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/floors 说明:获取单个模型的所有楼层信息 参数: 请求 path(示例):https://api.bimface.com/data/v2/files/121122338206496…
系列目录     [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息>中介绍了如何获取一个模型中包含的楼层信息.面积分区.房间等信息.本篇主要介绍如何获取单个模型中单个房间信息. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId} 说明:获取单个模型种单个房间信息 参数…
系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息>中,返回的楼层信息结果中包含了楼层的具体信息,其中包含楼层ID. 一个楼层中可能包含多个面积分区,本文介绍如何获取楼层对应面积分区列表. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/areas 说明:获取单个模型中单个楼层对应的分区列表. 参数: 请求 path(示例):https:…
系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息>中介绍获取单个模型的所有楼层信息.某些场景下根据需要也可以一次性获取多个模型的楼层信息. 请求地址:GET https://api.bimface.com/data/v2/files/{fileIds}/fileIdfloorsMappings 说明:一次性查询多个模型的楼层信息 参数: 请求 path(示例):https://api.bimface.…