具体实施方式
如上所述,本发明的诸方面涉及通过对等网络传送消息,包括在使用如无线连接那样的瞬态连接而互相连接的工作站之间通信,的系统、方法和数据结构。为助于读者理解,下面的描述分成各子段。这些字段包括:术语;本发明各方面的一般描述;示例硬件;本发明的示例系统、方法和数据结构;结论。
I、术语
在本说明书中使用下列术语:
术语“消息”或“消息数据”或“数据消息”在本说明书中交替使用。这些术语指的是从一台机器发送的由另一台机器接收的任何数据。术语“消息有效载荷”一般指的是包括要传输到会话中的其他用户的信息的数据消息部分。
“用户”指的是以某种方式,如通过传统的子网、内联网或因特网连接,连接到通信网络的成员。连接可以是如有线连接、无线连接或业内已知的其它连接那样的任何传统的连接。
“会话”指的是多个网络用户经通信网络互相通信的会议。加入会话的用户可位于公共子网上、不同的子网上或两者上。通信可以是视频的、声频的或其组合。
“参与者”指的是加入会话的用户。
“机器”指的是在经通信网络的通信中使用的任何设备。“机器”包括但不限于计算机终端或工作站、台式PC、笔式或触笔式PC、笔记本和/或膝上型计算机、掌上机、PDA、电话等。
“计算机可读媒体”指的是任何能由计算机系统上的用户访问的可得到的媒体。例如,“计算机可读媒体”可包括但不限于:计算机存储媒体和通信媒体。“计算机存储媒体”包括以任何技术或方法实现的易失型和非易失型、可移除和不可移除的媒体,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据那样的信息。“计算机存储媒体”包括但不限于:RAM、ROM、EEPROM、闪存或其他存储技术;CD-ROM、数字通用盘(DVD)或其他光存储设备;磁带盒、磁带、磁盘存储器或其它磁存储设备;或能用于存储所需信息并能由计算机存取访问的任何其它媒体。“通信媒体”一般以如载波或其它传送机制那样的调制数据信号的形式将计算机可读指令、数据结构、程序模块或其他数据具体化,并包括任何信息传送媒体。术语“调制数据信号”指的是以设置或改变一个或多个特征的方式来编码信号中的信息的信号。作为例子但非限制,通信媒体包括如有线网络或直接线缆连接的有线媒体,和如声音、RF、红外之类的无线媒体和其它无线媒体。任何上述的组合也应包括在“计算机可读媒体”的范围之中。
II、本发明各方面的一般描述
本发明的诸方面涉及可用于经对等网络传送消息的系统、方法和数据结构。例如,可使用这些系统、方法和数据结构以对等方式在协同会话中通过瞬态连接将消息传送到参与者。
本发明的更加详细的方面涉及到在网络上传输数据所述的方法。本发明的该方面的一个例子包括:(a)为数据传输建立会话,其中会话包括多个参与者;(b)从加入会话的参与者广播消息,其中该消息至少包括:广播参与者标识符、消息标识符、会话信息以及消息有效载荷;(c)判断接收广播消息的用户是否是会话的参与者;以及(d)当该用户是会话的参与者时,为该用户处理该消息。在本发明的至少某些例子中,判断用户是否是会话的参与者包括:(a)判断该用户是否在该会话中是活动的,或(b)判断该用户是否包含在会话参与者列表中。参与者可自由地加入和/或自由地离开会话,而不会不利地影响到其他参与者的数据传输。
在本发明的某些示例方法中,在对用户或任一参与者处理新获得的消息之前,所述方法还包括判断该用户或参与者是否已接收会话中所有以前的消息。若发现任何未接收的消息,该用户或参与者能获得这些消息。未收到的消息能以任何合适的方式获得。例如,可选地在需要消息的用户或参与者发送对丢失消息的请求之后,能通过从会话中的另一参与者的广播而获得消息。在本发明的该方面的一些例子中,当收到丢失消息请求时,会话的参与者会随机地判断是否发送一个或多个未接收的以前消息。消息请求和丢失消息的发送能重复,直到用户收到消息历史记录中的所有消息为止。
判断用户是否是会话中的参与者也能以任何合适的方式实现而不背离本发明。例如,用户的标识(如ID号)能针对授权能参与会话的所有用户的主列表进行校验。作为另一例子,可选地在询问会话中的一个或多个参与者新用户是否应被加入到会话中之后,一个或多个已有的会话参与者能接收关于新的用户已出现或在网上存在的指示,该用户可被加入到该会话中。在又一个例子中,在接收到新的用户出现或在网上存在的指示之后,所述方法还包括邀请新用户加入会话(可选地在询问会话中的至少一个参与者此邀请是否应被发出之后),仅当邀请被接受后才将新用户加入。
本发明的另一方面涉及访问正进行的会话所述的方法。本发明的该方面的某些示例方法包括:(a)访问发生会话的网络,其中网络可由不在会话中活动的用户访问,且其中会话包括能发送和接收消息数据的多个参与者;(b)判断是否加入该用户作为会话的参与者;和(c)当该用户作为参与者被加入到会话时,将所有以前在会话期间发送的消息广播给该用户。判断是否加入该用户的步骤能以任何合适的方式实现,包括上述的各种方式。
本发明的其它方面涉及在会话的多个参与者之间通信消息所述的方法。本发明这些方面的若干例子包括:(a)以对等方式连接至少第一参与者工作站及第二参与者工作站,其中每个参与者工作站能够以对等方式广播消息到会话中的其他参与者工作站,并以对等方式接收来自会话中的其他参与者工作站的广播消息;(b)由第一参与者工作站广播第一消息;(c)至少由第二参与者工作站接收第一消息;和(d)从第二参与者工作站广播第一消息到会话中在从第一参与者工作站广播时未收到第一消息的至少一个其它参与者工作站。此外,在本发明的这些方面的至少某些例子中,新的参与者工作站能加入到会话中,且这些新加入的工作站能获得会话中以前的消息,包括来自己离开会话的工作站的消息及来自仍进行会话的参与者工作站的消息。
本发明的又一个例子涉及与在网络上多个参与者之间数据传输有关的会话期间处理经网络接收的数据的系统。至少在本发明的某些例子中,这种系统可包括:(a)适用于接收来自加入会话的参与者的广播消息的接收器,其中消息至少包括:广播参与者标识符、消息标识符、会话信息和消息有效载荷;以及(b)可编程并适用于判断接收该消息的网络用户是否是会话的参与者的处理器,当该用户是会话的参与者时,处理该消息。至少在某些例子中,处理器通过下列步骤之一判断用户是否是会话的参与者,这些步骤包括:(a)判断该用户是否是会话的活动参与者,或(b)判断该用户是否包含在会话的参与者列表中。在处理消息之前,处理器还判断该用户是否已接收会话中所有以前的消息,若有任何消息未接收到,则可激活广播系统来发送对会话中以前未接收消息的请求。
本发明的还有的方面涉及用于实现包括上述本发明方法的各种方法的工作站。本发明的该方面的某些示例工作站可包括:(a)适应于访问在其中发生会话的网络的连接系统,其中会话包括能发送和接收消息数据的多个参与者;(b)可编程并适应于判断工作站的用户是否为会话中的参与者的处理器;和(c)适应于在判断出用户是会话的参与者时,接收在会话期间发送的消息数据的消息接收系统。
本发明的其他例子涉及在会话中多个参与者之间通信消息的系统。至少在本发明的某些例子中,这些系统可包括在对等网络中连接的多个参与者工作站,其中至少某些参与者工作站能够经网络广播消息数据到会话中的其他参与者工作站,并经网络接收来自会话中的其他参与者工作站的广播消息数据。在某些例子的系统中,各种单独的参与者工作站能自由地退出会话,且,如有必要的话,由退出的参与者工作站在退出以前广播的消息数据能由其他参与者工作站从已经接收该消息数据的余下的参与者工作站获得。除了退出现有会话之外,新的参与者工作站能自由地进入会话,并从留在会话中的一个或多个参与者工作站获得任何以前的消息数据(包括来自退出的工作站离开以前的消息数据)。
本发明的另一示例性方面中,子网上的任何机器和/或从会话接收输入的消息数据的任何机器、甚至不活动地参与该会话的那些机器,可接收、登录并保存输入的消息数据。因此,至少在本发明的某些例子中,连未涉及特定会话的机器都能重播数据给会话中的新加入的参与者,和/或对会话中的丢失消息请求进行作出回应。
本发明的诸方面还涉及具有存储有用于发送消息数据到会话参与者的数据结构的计算机可读媒体。在某些例子中,此数据结构可包括:(a)包含代表消息ID的数据的第一数据字段;(b)包含代表会话信息的数据的第二数据字段;(c)包含代表消息有效载荷的数据的第三数据字段。在本发明的至少某些例子中,代表会话信息的数据可包括代表从由会话ID;会话参与者列表;会话消息历史组成的组中选择出的至少一项的数据。在又一附加例子中,数据结构还可包括第四数据字段,它含有代表广播消息数据的参与者的标识符的数据。
至少在本发明的某些系统和方法中有用的另外的示例性数据结构可包括用于,可选地在用户加入到包括多个参与者的数据传输会话时,发送用户的标识数据到网络上的数据结构。在至少某些例子中,此数据结构可包括:(a)包含代表用户标识的数据的第一数据字段;(b)包含代表关于数据传输会话的标识信息的数据的第二数据字段;和(c)包含代表在会话中用户历史的数据的第三数据字段。例如,代表有关数据传输会话的标识信息的数据可包括代表从由会话ID和会话参与者列表组成的组中选择出的至少一个成员的数据。例如,代表用户的例示的数据可包括代表从由会话ID;至少标识由会话中的用户的工作站处理的最近消息的消息ID;和至少标识由会话中的用户发送的最近消息的消息ID组成的组中选择出的至少一个成员的数据。
本发明的各种系统、方法和数据结构可用于发送任何消息数据而不背离本发明。在某些例子中,消息数据可包括电子墨水数据、文本数据、图象等。作为另外例子,会话能以“虚拟白板”的形式,其中多个会话参与者能加入、删除或修改消息数据(如每个参与者的各自的计算机屏幕能示出消息数据的演示,且参与者能加入、删除和/或修改该数据,且由一个参与者作出的增加、删除和/或修改也将出现在其他参与者的屏幕上)。而且,虽然任何合适的协议都可用于发送消息数据到各种会话参与者,但是在本发明的某些例子中,使用用户数据报协议(“UDP”)和/或传输控制协议(“TCP”)来广播消息。下面更详细地描述本发明的系统、方法和计算机可读媒体。
III、示例硬件
图1示出能用于实现本发明的各个方面的通用数字计算环境的示意图。在图1中计算机100包括处理单元110、系统存储器120和将包括系统存储器120的各种系统组件连接到处理单元110的系统总线130。系统总线130可以是若干类总线结构中的任一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。系统存储器120可包括只读存储器(ROM)140和随机存取存储器(RAM)150。
包含如在启动期间帮助计算机100内的各部件间传输信息的基本例行程序的基本输入/输出系统160(BIOS)存储在ROM 140中。计算机100还可包括读写硬盘(未示出)的硬盘驱动器170、读写可移除磁盘190的磁盘驱动器180、和读写如CDROM或其它光媒体之类的可移除的光盘192的光盘驱动器191。硬盘驱动器170、磁盘驱动器180和光盘驱动器191分别通过硬盘驱动器接口192、磁盘驱动器接口193和光盘驱动器接口194连接到系统总线130。这些驱动器和它们相关的计算机可读媒体为个人计算机100提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。本领域的技术人员应理解,在示例性操作环境中也能使用其他类型的能存储由计算机存取访问的数据的计算机可读媒体,如磁带盒、闪存卡、数字视频盘、Bernoulli卡式磁带、随机存取存储器(RAM)、只读存储器等。
能存储在硬盘驱动器170、磁盘190、光盘192、ROM 140或RAM 150中的若干程序模块包括操作系统195、一个或多个应用程序196、其他程序模块197和程序数据198。用户能通过如键盘101和指针设备102(如鼠标)那样的输入设备输入命令和信息到计算机100中。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、卫星反射器、扫描仪等。这些和其他输入设备常常能通过连接到系统总线130的串行端口接口106连接到处理单元110,但也能通过如并行端口、游戏端口或通用串行总线(USB)那样的其他接口连接。此外,这些设备也能经合适的接口(未示出)直接连接到系统总线130。
监视器107或其它类型的显示设备也能经过如视频适配器108那样的接口连接到系统总线。除监视器107之外,个人计算机通常包括如扬声器和打印机那样的其它外围输出设备(未示出)。在一个例子中,提供笔式数字化仪和附带的笔或触笔166,以便数字化地捕捉手写输入。虽然在图1中示出在笔式数字化仪165和串行端口106之间的连接,但实际上笔式数字化仪165能直接连到处理单元110,或它能以任何合适的方式连接到处理单元110,如通过并行端口或其他接口和业内已知的系统总线130。此外,虽然在图1中数字化仪165示作与监视器107分开,但是数字化仪165的可用输入区域能与监视器107的显示区域共存。而且数字化仪165能集成在监视器107中,或它能作为重叠或附属于监视器107的单独设备而存在。
计算机100能用于在使用对如远地计算机109那样的一个或多个远地计算机的逻辑连接在联网环境中。远地计算机109可以是服务器、路由器、网络PC、对等设备或其它公共网络节点,它通常包括上述关于计算机100所描述的许多或所有部件,虽然为简单化起见,在图1中只示出存储设备111。在图1中描述的逻辑连接包括局域网(LAN)112和广域网(WAN)113。这种联网环境在使用有线和无线连接的办公室、企业范围计算机网路、内联肉和因特网中是常见的。
在LAN联网环境中使用时,计算机100通过网络接口或适配器114连到局域网112。在WAN网路环境中使用时,个人计算机100一般包括调制解调器115其它装置来在诸如因特网之类的广域网上建立通信链路。内置或外接到计算机100的调制解调器115可经串行端口接口106而连接到系统总线。在联网环境中,关于个人计算机所描述的程序模块或其部分可存储在远地的存储设备中。
可以理解,示出的网络连接是示例性的,可使用在计算机之间建立通信链路的其他技术。我们认为存在各种众知的协议的任一种,如TCP/IP、以太网、FTP、HTTP、UDP等,且系统能以用户-服务器的配置方式操作,以便允许用户从Web服务器检索网页。各种传统的Web浏览器的任一种都能用于显示和处理在网页上的数据。
虽然图1的环境示出了一种示例性环境,但是可以理解也能使用其它计算环境。例如,本发明的一个或多个例子能使用具有比图1所示的上述全部方面要少的方面的环境,对本领域的技术人员而言,这些方面可以是各种组合和子组合的形式。
图2示出能按本发明的各方面使用的笔式个人计算机(PC)201。在图1的系统中的任何特征、子系统和功能可以包括在图2的计算机中。笔式个人计算机系统201包括如液晶显示器(LCD)屏的数字化平板显示器那样的大的显示面202,在该显示面上显示多个视窗203。使用触笔204,用户能在数字化显示区域选择、加亮和写入。合适的数字化显示屏的例子包括如从Mutoh公司(Mutoh Co.)或Wacom技术公司(Wacom Technology Co.)可买到笔式数字化仪那样的电磁笔式数字化仪。也能使用其它类型的笔式数字化仪,如光数字化仪。笔式计算系统201解释使用触笔204作出的动作,以便处理数据、输入文本和执行传统的计算机应用任务,如创建、编辑和修改电子报表、文字处理程序等。
触笔204可配备有按键或其它特征以扩展其能力。在一个例子中,触笔204可如“铅笔”或“钢笔”那样工作,其中一端组成写部分,而另一端组成“擦除器”部分,并且,当擦除器部分在显示屏上移动时,指示出要被擦除的显示屏上的电子墨水的部分。也能使用其它类型的输入设备,如鼠标、轨迹球、键盘等。此外,在触敏式或接近敏感式显示器上可使用用户的手指选择或指出显示图像的部分。因此,这里所使用的术语“用户输入设备”具有广泛的定义,它包容已知输入设备的许多变种。
在本发明的某些例子中,多个用户经对等网络而互相通信。在某些例子中,这些用户可以是会话的参与者,会话中,来自一个参与者的数据消息以所有参与者都能看到并处理该数据的方式而传送到其他参与者(如“电子白板”会话或其它类型的协同会话)。
如在本发明的某些例子中发生的那样,图3A和3B示出互相通信的参与者A-J的例子。在本发明的某些示例系统和方法中,不是让所有参与者A-J连接到公共服务器,或指定一个参与者的工作站作为事实上的服务器,而是参与者A-J使用例如如带有图1和2中示出的通用计算机的工作站而经对等网络进行通信。以此方式进行的通信能以任何合适的方式进行,包括业内众知的各种传统方式。在所示出的例子中,每个参与者经对等网络发送(如通过广播或直接发送)他(她)的消息数据,使得其他参与者接收该数据。图3A示出参与者A广播数据消息到参与者B-J的例子。而在图3B中,参与者C广播数据消息到参与者A、B和D-J。以同样的方式,网络上每个参与者A-J(实际上是网络的每个用户)能发送和接收到来自网络的其他参与者(和用户)的通信。
能使用任何合适的系统或协议在网络的参与者和用户之间发送消息而不背离本发明。例如,消息数据可通过使用TCP或UDP的网络而传递给会话中的各个参与者。TCP消息发送是很好的,因为TCP保证向公共子网的用户及位于不同子网依次提交数据包(如经因特网或其它通信网络的提交)。UDP不保证消息提交或依次的消息提交。
作为另一例子,本发明的某些例子的系统及方法可使用UDP的广播特征并广播消息数据到给定子网上的所有用户(TCP不支持广播发送)。若消息数据是以用会话的参与者列表编码的,则网络上的用户能看到输入的消息数据,判断他们是否为包含该数据消息的会话的参与者,并加入该会话和/或在他们是参与者的情况下处理消息有效载荷。下面更详细地讨论使用UDP广播消息来以此方式传输数据。
此类UDP广播通常限于向位于公共子网的用户的发送。然而,能使用桥接系统和方法,桥接在本说明书中描述的任何UDP消息到其它子网的用户。能使用任何合适的桥接系统和方法而不背离本发明,合适的桥接系统或方法在美国专利申请“Bridging Subnet Broadcasts Across Subnet Boundaries”中描述,2003年4月24日提交,发明者名为Philip Su和Robert Jarrett(代理人文档号003797.00507)。此待决专利申请整体上结合于此作为参考。
然而如上所述,UDP广播具有某些限制,该协议不保证提交和/或依次提交消息数据包到所有用户。但是本发明的某些示例系统和方法,通过向系统和方法提供判断参与者是否丢失任何消息的手段,并提供向初始发送时未接收到消息的用户重新发送丢失的消息的手段,从而克服了此限制。本发明的这些方面还允许后加入到会话的用户或偶而离开会话的用户能容易地“赶上”并接收在会话中先前发送的任何丢失的消息数据。本发明的这些方面还在下面更详细地加以描述。
IV、本发明的示例系统、方法和数据结构
A、在某些例子中保存的数据
图4一般地示出在本发明的系统和方法的某些例子中由用户工作站或合适的存储系统保存的某些信息和数据400。每个用户和/或计算机工作站由唯一的标识号402标识,该标识号对网络上的其他用户标识该用户和/或该工作站硬件。此用户标识号能特定地标识登录到计算机系统的成员和/或硬件本身。
如图4中由参考标号404a(会话1)到404n(会话n)所示,每个用户潜在地可加入到任何数目的不同的协同会话中。每个会话404a到404n可由唯一的标识号(图4中406a到406n)标识,且工作站或其它存储系统能对每个会话保存一张单独的参与者列表(图4中408a到408n)。会话的参与者列表408a到408n可为加入会话的每个参与者和/或为授权加入会话的每个用户仅仅包含唯一的用户ID号402。
每个会话还可包括在该会话中所涉及的消息列表。在图4中,会话1(404a)的消息指定有410a到410m的参考标号,而会话n(404n)的消息指定有420a到420k的参考标号。具体会话中所涉及的消息的数目并没有限制。每个消息(410a到410m和420a到420k)包括其自己唯一的标识符(消息410a到410m分别为标识符412a到412m,消息420a到420k分别为标识符422a到422k)。此外,每个消息(410a到410m和420a到420k)包括其相关的消息有效载荷(消息410a到410m分别为消息有效载荷414a到414m,消息420a到420k分别为消息有效载荷424a到424k)。消息有效载何可包括任何合适的数据,如电子墨水笔划、文本信息、图象信息、删除、移动和/或修改墨水、文本或图象的指令等。
可用业内众知的任何传统方式来为用户ID 402、会话ID406a到406n和消息ID 412a到412m和422a到422k指定唯一的标识符。例如,可对这些值的每一个指定全局唯一的标识号(“GUID”)。
B、电子白板
1、独立消息
图5A到5J例示出数据消息的例子,它们可经本发明的至少某些例子的虚拟的或电子白板或其它协同会话而在会话的多个参与者之间交换。图5A到5J中的每一附图示出示例出电子白板500,在消息数据交换时,它呈现在参与者工作站的显示屏上。参与者可在对等网络上使用UDP广播发送而连接在一起,以图3A和3B描述的方式传输消息数据。参与者可位于相同或不同的地方而不背离本发明。
图5A到5J例示出与由参与者A-C共同努力在电子白板上书写单词“Break”相关的电子墨水笔划。至少参与者A-C在某些时刻加入到会话中,在此期间在电子白板上写出此词,虽然其他人参加入会话和/或参与者A-C能不时地离开,这不背离本发明。电子墨水数据能以任何合适方式收集,包括业内众知的传统方式,且此电子墨水数据能如图4的消息有效载荷414a到414m那样提供。消息有效载荷可包括表明电子墨水各种特征的数据,包括但不限于在墨水笔划中笔所触及的电子白板上的点(或笔方向改变的位置和新的笔的方向);在电子白板上笔划的位置;笔划的颜色;其它笔划特征(黑体、斜体、加亮、下划线等)。
如图5A和5B所示,参与者A使用在他的计算机工作站上出现的电子白板500来书写字母“B”。在此例中,电子笔的每个笔划组成至少一个单独的数据消息(消息A1和消息A2),它从参与者A的计算机通过如UDP广播、TCP发送或其它合适的传输协议而发送到会话中的其他参与者。在参与者A完成字母“B”后,参与者B在他的计算机工作站上以类似所述的方法使用两个电子墨水笔划书写字母“r”,并发送对应这些笔划的(至少)两个数据消息(图5C和5D中的消息B1和B2)到其他参与者。然后参与者C使用一个笔划书写字母“e”并发送代表此笔划的(至少)一个电子数据消息(图5E的消息C1)到其他参与者。随后,参与者A使用两个笔划书写字母“a”并发送代表这些笔划的(至少)两个数据消息(图5F和5G的消息A3和A4)到其他参与者,且参与者B使用三个笔划书写字母“k”并发送(至少)三个数据消息(图5H、5I和5J的消息B3、B4和B5)到其他参与者。
在图5A到5J示出的例子中,每个墨水笔划独立于其它笔划,所以在此例子中“按次序”提交各种数据消息到每个参与者工作站并不是重要的问题(注意,在此例中,每个笔划的消息数据包括在电子白板上笔划的绝对位置(可选地带有允许适当地映射以匹配在其他参与者硬件上电子白板的位置、分辨率等的信息),使得一个笔划的位置不依赖于其它笔划的位置)。换言之,若参与者B在接收字母“a”(消息A3和/或A4)的一个或多个笔划之后,和/或甚至在他开始写字母“k”之后,接收来自消息C1的字母“e”,那也没有关系。笔划能以任何次序出现在每个参与者的电子白板上,而最终的单词仍然正确地呈现。
而且虽然图5A-5J的例子示出组成各笔划组成单独的数据消息,但这并不是必须的。任何数目的笔划或单个笔划的一部分都可包含在单个数据消息中而不背离本发明。例如,若需要,包含在书写字母“B”的笔划(图5A和5B)可在单个数据消息中发送到其他会话参与者而不背离本发明。作为另外的例子,很长的和/或复杂的笔划可被分成两个或更多的数据消息,以便发送到其他参与者,这不背离本发明。
2、依赖消息
然而在某些情况中,某些参与者会发送依赖于其它消息的消息。例如,一个参与者可改变一个或多个现有的墨水笔划、文本、图象等的颜色、加亮显示信息、斜体显示信息、下划线信息、黑体信息、删除信息、放大信息、缩小信息、移动信息、复制信息或对其内容或特征作出其它一些改变。图6A到6E例示出这样的一个例子。图6A以在图5A到5J中书写的词“Break”为开始。参与者A、B和C决定使用在电子白板600上的协同努力将该单词改变成单词“Brake”。作为作出此改变的第一个步骤中,如通过比较图6A和6B所述,参与者C使用“剪切”特征剪切掉字母“e”(即图6B的消息C2删除或剪切图5E的消息C1)。此步骤由参与者C使用某些合适所述的方法,如以传统方式选择字母“e”(如套索选择或方框选择)并完成剪切活动,来完成。另选地,字母“e”能使用传统的擦除特征从白板上擦除。消息C2被发送到会话的其他参与者以作出此改变。因而,在此情况的消息C2依赖于消息C1(即写字母“e”的消息必须在实现剪切动作的消息被执行前接收到)。
在协同努力的下一步,参与者A移动字母“ak”靠近字母“Br”,见图6C。而且,这同样能以任何合适的方式实现,如使用选择动作(如套索或方框选择等)和用鼠标、笔或其它合适的用户输入设备的拖放动作。此动作作为消息A5被发送到会话中的其他参与者。消息A5要求至少已发生消息A3、A4、B3、B4和B5。任选地,根据特定例子的系统和方法是否能处理重叠的信息(如使用层次结构或以某种另外合适的方式),消息A5可依赖于消息C2的发生(如上所述,这取决于消息C1的发生)。
下一步如图6D所示,由参与者B使用电子墨水对字母“B”加下划线。此信息作为消息B6而发送给其他参与者。消息B6同样独立于所有其它消息,因为它不修改、删除或以其它方式改变任何现有消息数据的特征(如墨水笔划)。图6D中示出的以方式手工添加下划线不同于使用电子产生的下划线作为对墨水、文本或图象的修改,因为以此方式进行手工下划线仅仅是另一墨水笔划,且不修改被下划线的电子墨水或其它文本的数据结构。
图6E示出“粘贴”动作,其中参与者C将在消息C2(图6B)中删除的字母“e”粘贴在经移动的字母“k”之后。此数据消息作为消息C3被送到会话中的其他参与者。消息C3至少依赖于先前消息C2的完成,而后者本身又依赖于消息C1的发生。任选地,根据特定例子的系统或方法是否能处理重叠的信息(如使用层次结构或其它任何合适的方式),消息C3可依赖于消息A3、A4、A5、B3、B4和B5的发生。而且,本发明的例子的系统和方法能以任何合适所述的方法处理此类重叠信息及其显示而不背离本发明。
作为替代,不是如图6E所示的消息C3那样使用粘贴动作,而是会话中的任一参与者简单地在合适的位置重写字母“e”。在此情况中,如上一般讨论的那样,新的笔划不依赖于任何以前的笔划,除非需要某种依赖性来处理在电子白板上的重叠或分层信息。
可使用处理依赖信息的任何合适方式而不背离本发明。例如,发送消息的参与者机器通过判断为了完成参与者输出消息所需的动作而至少要完成哪些数据消息,来以上述的一般方式跟踪依赖信息。于是,当该消息数据被发送(如广播)到其他参与者时,它能被编码以包含为完成新的广播消息所需的功能而必需的任何其它消息的唯一的消息ID。然后,接收的机器能看到依赖信息,并保证在新接收的消息被完成之前已完成所有必需的“父”消息。下面结合图7和8描述处理依赖性的其它方法。
C、输出消息的数据结构
图7一般地例示出用于本发明的系统和方法的各种例子中的从参与者工作站输出的消息的数据结构700。此例中的数据结构700包括包含代表发送消息的参与者的用户ID号702的数据。此用户ID可以是上面结合图4所讨论的唯一的用户标识符402,它能标识发送消息的特定用户或参与者。此外或另选地,用户ID 702也可包括硬件信息,如标识发送消息的特定硬件的信息、硬件和/或正被发送的数据的特征等(如显示分辨率信息等,使得该数据能被精确地翻译和映射到加入会话的各个机器中)。
示例的数据结构700中的另一字段包括正被发送的消息的唯一的消息标识符704。此消息标识符704可对应于上面结合图4所描述的消息标识符412a-412m和422a-422k。
图7所例示的数据结构700包括另一字段,该字段包含有关此新消息所针对的会话的各种信息706。在此数据字段中可包含各种类型的信息而不背离本发明。例如,如图7所示,此数据字段可包含消息有效载荷所针对的唯一的会话ID号708。此数据字段还能包含会话中的参与者列表710(如以对会话中所有参与者和/或会话中所有授权参与的用户的用户ID号702的形式)。在此数据结构700中的会话信息706的其它可能部分可包括“消息历史”信息712。此消息历史信息能包含如上所述的对此当前消息的所有依赖信息(如所有需要的父消息ID号704)。
最后,在此示例数据结构700中的另一数据字段包含实际的消息有效载荷714,它告诉接收的机器作为此消息的结果应采取的动作。如上所述,此消息有效载荷714可包括电子墨水信息(如墨水笔划);文本;图象;修改电子墨水、文本、图象等的信息等;和/或其他合适的或希望的信息。
虽然实际跟踪依赖性和父数据消息信息是保证没有消息动作在应该被处理之前就得到处理的有效方法,但是至少在某些情况中这样做是困难的(若不是不可能)和/或计算量很大的。因此,本发明的某些例子,如图7所示的输出消息可包括某种其它类型的消息历史712。例如,发送消息700的机器可包含至少在该机器上处理的最近消息的消息标识号(704、412a-412m,422a-422k)。在某些例中,数据结构700在消息历史712中会包括在该机器上处理的最近5-10个消息的消息标识号(704、412a-412m、422a-422k),或更多。因而,当接收的机器接收被发送的新消息700时,它们将(从消息历史712)认为该新消息700依赖于在发送机器上处理的每个最近消息。若接收的机器仍未收到在消息700的消息历史712中处理的所有最近消息,则它在接收到消息历史712中的所有消息之前不处理新消息700。
假设接收机器在新消息700的消息历史712中没有一个或多个消息,它将等待丢失的消息(可选地,发出对丢失消息的请求,这在下面详细讨论)。当丢失的消息被接收,该丢失的消息也具有从它开始发送时刻起的消息历史字段712,除非和直到在其消息历史712中的所有消息也被接收之前,接收的机器将不处理新收到的和以前丢失的消息。以此方式,接收消息700的机器将持续校验消息和时间上追溯的消息历史,并只有在消息历史712中所有消息被接收和处理之后才处理新接收的消息700。
作为另一例子,另选地或除发送在给定机器上处理的最近消息以外,输出的消息数据700在其消息历史712中可包含由此特定机器发送的一个或多个最近消息的一个列表。任何数目的以前发送的消息能包括在消息历史712中而不背离本发明,如5-10个以前刚发送的消息。然后接收机器以同样方式使用此信息加上或替代上述最近处理的消息历史,以保证在由该机器以前发送的所有消息被处理之前不处理新的消息700。
希望时可选地,若后来的消息删除或剪切先前的消息,则本发明的某些例子的系统和方法在进行其它处理之前不必等待删除的消息或删除它的消息。此对消息能被忽略并保持为不被接收和不被处理。
能使用保证消息以合适的次序被处理并保证合适的依赖性的各种其它方法而不背离本发明。例如,确实独立的消息能被标记以使得本发明的某些例子的系统和方法将知道它们能立即处理而不必等待其它消息。此外,任何数目的以前的消息(以前处理的和/或以前发送的)可包含在消息历史712中而不背离本发明,例如,考虑各种因素,如未被给定用户接收的消息的似然率、网络通信量、网络速度、输入消息的速率、会话中参与者的数量、连接的类型、用户从网络断开的似然率等。
D、处理输入消息
图8示出描述在本发明某些例子中处理消息的各方面的流程图。为帮助理解,结合图7中提供的参考标号讨论图8中的信息。此例中,经对等网络,使用如UDP的广播能力来广播消息700。如所示,在会话中参与者发送广播消息时过程开始(S800),该消息由在网上进行侦听的用户接收(S802)。UDP广播消息发送到子网的所有用户而不是针对子网的特定用户,在本发明的此例的系统和方法中接收广播消息700的子网用户接着判断他(她)是否侦听此会话ID号(S804)。这能通过例如查看包括在消息700中的会话ID号708来实现。若接收用户正在侦听此会话ID号(在S804回答“是”),则接收用户的计算机接着校验以确定消息700的消息历史712中的所有以前的消息是否已被接收(S806)。若是,则处理新的消息700(S808),且过程结束(S810)(如开始处理下一个消息或等待下一个消息)。
若在S806判定,接收用户还未收到在新接收的消息700的消息历史712中所提到的所有以前的消息(回答“否”),则接收用户的机器将发送或广播对任何丢失消息的请求(S812)。然后,在适当的等待时间后,本发明的此例的系统和方法判断所请求的消息是否已被收到(S814)。若否,则重复S812和S814,直到消息历史中的所有消息被收到为止(若一个或多个丢失消息从未被收到,则可提供合适的超时和/或差错消息)。当输入的丢失消息被收到(在S814回答“是”),系统返回到S804(见箭头A),并校验新接收的消息的消息历史,以确保收到在其消息历史中的所有消息。否则箭头A返回到S806之前的过程。以此方式,处理在时间上追溯进行,且只有当在其消息历史中所有消息已被接收和处理时,才开始处理新接收的消息。
若在S804输入消息接收者不在侦听此会话ID号(回答“否”),则本发明的此例的系统和方法接着校验以便判断在消息700中的参与者列表710是否包括接收用户的ID号(S816)。若否,则此消息不是针对该接收用户的(S818),该消息被该接收用户的工作站忽略。过程结束(S810)(如,该接收用户可继续侦听新的广播消息)。另选地,未加入特定会话的用户可保存输入消息,并能重播消息到到新的参与者和/或响应对丢失消息的请求,这在下面将更详细描述。
若在S816,输入消息700的参与者列表710包括接收用户的ID号(回答“是”),则接收用户能被加入到该会话(S820),且可开始校验以保证在消息历史712中所有的以前消息。
在S812,输入的新消息700的接收者广播对新消息700的消息历史712中以前未接收到的消息的请求。尤其是当使用UDP作为传输协议时更会发生此情况,因为,如上所提到的那样,UDP不保证提交消息给所有预定的接收者。因而,本发明的某些例子的系统和方法至少在某些情况需要广播消息到没有接收到最初发送的消息的参与者。此外,会话的后来者将需要通过获取会话中所有以前的消息而达到会话的前沿。通过使用图8中描述的过程,只要输入的消息告诉会话的参与者他们丢失了消息历史中的消息,所有会话的参与者能容易地获得任何以前丢失的消息,而不会过分地减慢系统或过程。
在本发明的此例中,当对丢失消息的请求被广播时(S812),会话的所有参与者可接收此请求(如UDP广播)。若所有参与者重播丢失的消息,这将用重复的广播消息而过分地阻塞系统,当大量参与者涉及该会话中时,问题就恶化了。因而,在本发明的某些例子中,会话中的每个参与者将随机地决定当接收到这样的请求时是否重播丢失的消息以让请求者接收。例如,若会话包括六个参与者,当广播丢失消息请求时,余下五个参与者中的每一个参与者将随机决定是否重播丢失的消息(如随机地选择1和5之间的数,若选中的数是1,则发送该消息)。若无人发送消息,将出现另外的丢失消息请求(如上讨论),且将发生另一随机选择过程。此过程能重复,直到请求方接收到丢失的消息为止。通过使用此类过程以提供丢失的消息,会话的任何参与者能向其它参与者或新参与者提供丢失的消息,使参与者能自由进入或离开会话而仍然保持所有以前发送的数据对会话的所有人都可用。
在本发明的某些例子中,关于特定用户是否会重播丢失的消息的判断要考虑诸多因素,例如,在某一网络中丢失消息的似然率、网络通信量、网络速度、参与会话的参与者数、连接的类型等。例如,若特定网络和/或会话的建立一般丢失50%的UDP广播消息,且给定的用户是接收丢失消息重播请求的五个用户之一,则任一用户能编程成具有2/5的概率来响应丢失消息重播请求而重播消息,以补偿两个广播消息中的一个可能会丢失的事实。
另选地,当新参与者任何时刻进入会话,一个机制能自动地提供所有以前发送的消息到该新的参与者(如由原先发消息的参与者、一个或多个选定的参与者、和/或以任何其它希望的或合适的方式重发的消息)。又一另选例子,原先发消息的参与者只要仍在会话中,就能重发任何被请求的丢失消息,若原先发消息的参与者不再留在会话中,则另外成员能随机地(或以某种预定次序)重发被请求的丢失消息。能使用响应丢失消息请求来判断参与者是否重发丢失消息的任何方法而不背离本发明。
E、“查验(ping)”数据
图9例示出数据结构900,它能用于帮助本发明的某些例子的系统与方法来发现会话的潜在的新参与者和/或发现一用户可能加入现有的会话。当会话在进行中时,会话的参与者将例如通过使用UDP广播能力在子网上广播数据那样周期地发送某些标识数据。该数据在本说明书中也称为“查验数据”,它周期性地通知网络上的其他用户某些信息。此类的查验数据通常用于例如无线连接和通信中。
在本发明这方面的例子中,数据结构900可包括对会话重要的各种信息。首先,在数据结构900中提供包含标识发出查验数据的用户的信息的字段(如上述的用户ID号902,它能标识使用特定机器、硬件或两者的成员)。数据结构900中的另一字段可包括关于该用户的工作站所加入的会话904的信息。如上面提到的那样,每个用户的计算机或工作站能加入不只一个会话。对于每个会话,查验数据可包含各种信息,如会话ID号信息906a和906b、会话参与者列表908a和908b(如包括会话的每个参与者的用户ID号)等。
查验数据900还可包括有关用户参与的每个会话的消息历史的信息。在图9中此数据字段以参考标号910示出。例如,对于每个会话,查验数据可包括表明由此计算机处理最近的一条或多条消息的数据(字段912a和912b)和/或表明由此计算机发出的最近的一条或多条消息(字段914a和914b)(如以消息ID号的方式)的数据。在数据字段912a、912b、914a和914b中可包括任何希望数目的消息,如5-10个消息,这不背离本发明。以此方式使用“查验数据”帮助保持所有用户更新并防止单个消息长期“丢失”(例如,若消息丢失且在下一消息发送之前经过长时间,不使用周期性的“查验数据”发送消息ID,则丢失的消息会继续保持丢失,例如直到原先消息发送者(或另外的参与者)发送其它消息为止)。
在本发明至少某些例子中,此查验数据能结合如图10所示的过程而使用,以方便地加入新的用户作为会话的新参与者。例如,当用户进入发生会话的网络时开始图10的过程(S1000)。新进入的用户最终将接收来自会话参与者的此类查验数据(S1002)。若用户的ID号包括在从至少一个会话参与者接收的查验数据中(S1004)(如作为参与者列表908a或908b的一部分)(回答是“是”),则用户的系统将知道该用户能加入此会话。然后用户的机器能从与查验数据900包含在一起的消息历史910请求丢失的消息(S1006),并如通过结合图8描述的过程而达到会话的前沿。若希望,用户能通过询问或对话框或任何其它合适的方式得到选项,决定他(她)是否希望加入会话。然后图10的过程结束(S1008),且用户的系统能侦听其它的查验和/或消息数据。
在S1004,若过程判定该用户的ID号未出现在接收的查验数据900中的参与者列表908a或908b中(回答“否”),则此过程跳过S1006而结束(S1008),且系统能继续侦听其它查验和/或消息数据。
图11包括描述另一过程的流程图,通过该过程,用户作为会话的潜在参与者能被发现并被邀请到会话中。过程开始时(S1100),未加入特定会话的用户进入发生会话的网络(S1102)。例如当新进入用户的计算机广播查验数据900时(如通过UDP广播),此事实能被会话的参与者认出。若新进入的用户未加入任何会话,如图9所示,该查验数据900可限于用户ID号902。当会话中一个或多个参与者接收此新进入用户的查验数据信息时,此例的系统和方法能提醒一个或多个现有的参与者,新进入的用户是否应被邀请参与该会话(S1104)。若参与者决定邀请新来者加入会话(回答“是”),则新来者的用户ID号被加到该会话的参与者列表(S1106)。然后,可发送在字段908a或908b中包括新来者的用户ID号的查验数据900(S1108)。另选地,会话中的下一个数据消息700在参与者列表710中也将包括新来者的用户ID。当新来者接收此查验数据900和/或消息数据700时,他在查验数据900和/或消息数据700中记入他的用户ID,且进行图8和或10的过程。然后图11的邀请过程结束S1110。可选地,如联系图10如上所描述的那样,新用户能被邀请加入会话。
若在S1104,会话中的参与者决定不邀请新来者加入会话(回答“否”),则跳过S1106和S1108,且过程结束S1110。也可使用查验数据900使其他人能判定某一用户何时已离开会话。例如,若在预定的时间间隔内(如查验数据发送频率的4倍)未收到会话参与者的查验数据900,则其他参与者可判定此参与者已离开该会话。若希望的话,可在某些示例系统和方法中从会话参与者列表中删除该先前的参与者的ID。可选地,系统能提醒会话的其余参与者,询问是否应从会话的参与者ID列表中删除以前的参与者。
F、冲突消息
本发明的至少某些例子的系统和方法包括处理同时的、几乎同时的和冲突的指令的协议和过程。在此类包括独立地能加入输入的多个用户的协同系统和方法中,由各个成员发送的某些消息数据不可避免地会冲突。例如一个参与者会寻求从电子白板剪切掉一个墨水笔划、多个笔划、文本或图象,恰巧同时另一参与者寻求改变同一笔划、多个笔划、文本或图象中的某些或所有的颜色、大小或其它特征。
此情况能以任何合适的方式得到处理而不背离本发明。例如,若会话中的所有工作站在使用同一中央时钟的公共网络上运作,每个消息可以用基于此中央时钟的发送时间标记来标记,而消息处理的次序可基于此时间标记。对于两个或多个恰巧同时发送的消息来说,可使用某类分层的次序来确定哪个消息占先。例如,可根据对加入该会话的每个参与者的用户ID号使用字母和/或数字的层次排序。作为另一例子,可根据冲突的参与者加入会话的时间建立层次关系。也可使用包括在其它消息中随机选择一消息的许多其它可能方法,这不背离本发明。
因为至少在本发明的某些例子中消息是在对等网络上广播的,两个冲突的同时消息可在某些参与者的工作站以错识的次序被接收,从而导致在参与者的工作站知道存在较高层消息之前处理较低层的消息。例如,假设参与者A发送消息A10,命令删除墨水笔划,恰巧同时参与者B发送消息B10,命令放大同一墨水笔划。这两个消息互相冲突。然后假设,由于分层协议,消息A10领先于消息B10(如根据冲突消息ID或冲突发送用户ID的字符/数字次序)。因为在本例中参与者A和B都以对等方式与所有其他参与者通信,参与者C(和其他人)能在消息A10之前收到消息B10。在收到消息B10时,参与者C的工作站不知道消息A10,且若在消息B10的历史中所有以前的消息都出现在参与者C的工作站,该工作站可处理B10,然后以后接收消息A10。在此情况下,当它接收消息A10时,参与者C的工作站能执行“取消”(undo)功能以取消所有已处理的消息,直到取消消息B10为止。然后消息A10将在参与者C的工作站被处理,而消息B10(以及任何其它依赖消息B10的消息)将被舍弃。其它不依赖于消息B10的“被取消”的消息将再次由参与者C的工作站以原始的或按时间标记的次序进行处理。
当然,可使用其它合适的过程和协议处理冲突消息而不背离本发明。
G、建立新会话
能以任何希望或合适的方式发起新会话而不背离本发明。例如,当启动电子白板应用程序或其它应用程序时,程序提醒启动程序的一方输入希望的或授权的参与者的名字或用户ID号。作为另一例子,当启动此类应用程序时,会话的潜在的参与者能经过如上所述的查验数据被标识和加入。作为又一个例子,当此类程序被启动时,启动程序的一方能访问合适的或潜在的参与者的菜单,并从此列表中选择可能的参与者。这些选项仅仅是例子。能使用这些可能性和/或其它可能性的组合而不背离本发明。
H、安全性
如上所述的本发明的各种例子使用UDP广播来传输消息和/或查验数据到会话的参与者。如上提到的那样,UDP广播数据不加区别地发送到子网上所有用户(并能桥接到其它子网),甚至至少某些用户不想加入会话也是如此。虽然此特征的好处在于它允许用户自由地加入和离开会话,但是它也具有潜在的安全隐患,因为他人也面对着会话的消息数据。
能以任何合适的方式处理此事实而不背离本发明。例如,可使用加密、加扰和/或其它合适的安全方法,以防止对会话和/或消息数据的非授权的访问。作为另一例子,至少在本发明的某些例子中,可使用更加安全的和直接的通信,避免广播至少某些消息和/或查验数据。包括业内传统上已知的技术的任何其它合适的安全技术都能被使用而不背离本发明。
V、结论
上面已描述了本发明的各种例子,业内普通人士将理解到本发明将这些例子的所有组合及子组合包括在其范围中。此外,本领域的技术人员认识到,上述例子简单地例示了本发明的各方面。例如,虽然本发明的许多方面借助“电子白板会话”或其它协同会话描述,但是本领域的技术人员应该认识到,本发明不限于这些类型的协同会话。本发明的诸方面能广泛地应用于不同用户之间各种类型的通信。