Patent Description:
The development of information processing technology and the enhancement of networks in recent years make it possible for the users of devices including personal computers and mobile terminals to enjoy various pieces of content with ease, regardless of the capabilities of the devices operated by the users and the environments in which the devices are used. For example, there has been a growing number of content that not only allows users to individually receive and enjoy data sent from content providing servers, but also enables distant users to enjoy them together while communicating with each other. There has been known a chat system as means by which users talk to each other through characters, sounds, and video images via a network (see, for example, PTL <NUM>).

<CIT> teaches an instant messaging application, wherein a system providing same uses, for streaming of data, a server or not, dependent on available bandwidth and connection speed.

<CIT> relates to techniques to provide relay server configuration for geographically disparate client devices.

In order for users of a chat system to realize talks as natural as talks in person, it is desirable that words let go from users reach other users instantly. Particularly, in conversations about pieces of content that are performed concurrently, such as Internet games, or distributed moving images, delays in the arrival of talks at users can be highly stressful for the users. However, as more efforts are made to cope with various situations including the types of terminals that are used by individual users, network environments, the number of users who join chats, etc., a dilemma tends to arise because more time is required to communicate with users.

The present invention has been made in view of the above problems. It is an object of the present invention to provide a chat environment that is likely to cause less delays stably.

The above problems are solved by the subject-matter of each of the independent claims.

An aspect of the present invention relates to a relay point allocation server. The relay point allocation server, in a chat system in which a plurality of members that each have been joining a chat space have conversations with each other via a network using client terminals, includes a communication section acquiring an opening request to open the chat space from any one of the client terminals, and a chat server selecting section requesting a chat server selected on the basis of predetermined rules from a plurality of chat servers disposed in a distributed fashion and relaying statement data transmitted among the client terminals in response to the opening request, to relay statement data in the chat space corresponding to the opening request.

Another aspect of the present invention relates to a chat system. The chat system, in which a plurality of members that each have been joining a chat space have conversations with each other via a network, includes a plurality of client terminals outputting statement data of members to the network, acquiring statement data from other members from the network, and outputting the acquired statement data to an output device, a plurality of chat servers disposed in a distributed fashion and relaying the statement data transmitted among the client terminals, and a relay point allocation server responsive to an opening request to open the chat space from any one of the client terminals, requesting a chat server selected on the basis of predetermined rules from the plurality of chat servers to relay statement data in the chat space corresponding to the opening request.

Still another aspect of the present invention relates to a client terminal. The client terminal, for use in a chat system in which a plurality of members that each have been joining a chat space have conversations with each other via a network, includes an input information acquiring section for acquiring statements of the members that are using client terminals, a communication section for sending and receiving statement data by establishing communication with a chat server selected on the basis of predetermined rules from a plurality of chat servers relaying statement transmitted data among the client terminals, and an output section successively outputting the statement data of the members in a predetermined format to an output device, in which the communication section is responsive to a chat opening request acquired by the input information acquiring section, issues an opening request to open a chat space to a relay point allocation server selecting the chat server, and establishes communication with the selected chat server on the basis of information sent from the relay point allocation server as a result of the opening request.

A further aspect of the present invention relates to a chat server. The chat server, for relaying statement data transmitted between client terminals, among a plurality of chat servers disposed in a distributed fashion in a chat system in which a plurality of members that each have been joining a chat space have conversations with each other via a network using client terminals, includes a chat space opening section opening a chat space in response to a request from a relay point allocation server selecting a chat server on the basis of predetermined rules in response to an opening request to open the chat space that is issued by any one of the client terminals, and a chat processing section accepting a request to join the chat space that is issued from each of the client terminals, and establishing direct communication with the client terminals that have satisfied predetermined conditions, thereby relaying the statement data.

A still further aspect of the present invention relates to a chat space construction method. The chat space construction method, in a chat system in which a plurality of members that each have been joining a chat space have conversations with each other via a network using client terminals, includes a step of issuing an opening request to open the chat space from any one of the client terminals, a step of requesting, from a relay point allocation server, a chat server selected on the basis of predetermined rules from a plurality of chat servers disposed in a distributed fashion and relaying statement data transmitted among the client terminals in response to the opening request, to relay statement data in the chat space corresponding to the opening request, and a step of opening the chat space by the selected chat server and establishing direct communication with the client terminals, thereby relaying the statement data.

Note that any combinations of the above components and expressions of the present invention as converted into methods, apparatus, systems, and computer programs are also effective as aspects of the present invention.

According to the present invention, there are provided at all times preferable forms of information processing depending on situational changes.

First, a conventional general chat technology will be described below for highlighting the significance of an embodiment of the present invention. According to the present embodiment, it is assumed that users have conversations through sounds or video images accompanied by sounds via a network. However, users may have conversations through characters or a combination of two or more of characters, sounds, and video images. Data representing contents of conversations to be sent to a companion's terminal in a chat, irrespective of the kind of the data, will hereinafter be referred to as "statement data.

<FIG> illustrates a configuration of a general chat system. Chat participants talk to other participants through respective client terminals 200a, 200b, 200c, and 200d. For example, when a participant who uses the client terminal 200a, for example, makes a statement, the client terminal 200a encodes the statement data, and sends the encoded statement data to the client terminals 200b, 200c, and 200d of the other participants via a network such as the Internet.

In detail, the statement data are transmitted from a local network to which the client terminal 200a belongs via the Internet to respective local networks to which the client terminals 200b, 200c, and 200d belong as destinations. For data transmission between different networks, it is necessary to perform IP (Internet Protocol) address translation according to NAT (Network Address Translation), protocol conversion, and the like. As illustrated in the figure, a system in which client terminals establish communication with each other for directly exchanging data therebetween is referred to as a peer-to-peer networking system.

According to this system, statement data can be directly transmitted to the other party. Therefore, in general, the system is advantageous in that a delay time taken until the statement reaches the other party is short. On the other hand, since each client terminal needs to secure as many communication routes as the number of chat companions, the larger the number of people joining a chat is, the larger the consumption of resources is in the client terminals and the networks to which the client terminals belong. Consequently, in applications in which the users talk to each other while separately processing a piece of content such as a game or a moving image, for example, changes in the number of participants may adversely affect the responsiveness of the content themselves.

Moreover, some combinations of translation or conversion mechanisms such as NAT, in network interfaces on transmission routes may take time in establishing communication or may make communication difficult to be achieved. Further, direct communication tends to cause security problems. According to the present embodiment, these problems are overcome by providing chat servers that relay statement data. Specifically, a plurality of chat servers are located in different regions, and an appropriate one of the chat servers is selected depending on the positional information of client terminals, thereby realizing a chat system that is stable and involves shorter delay times.

<FIG> illustrates a configuration of a chat system according to the present embodiment. The chat system <NUM> includes client terminals 10a, 10b, 10c, ··· (hereinafter referred to collectively as client terminals <NUM>), chat servers 18a, 18b, 18c, ··· (hereinafter referred to collectively as chat servers <NUM>), a gateway <NUM>, a relay point allocation server <NUM>, and load balancers 16a, 16b, ··· (hereinafter referred to collectively as load balancers <NUM>).

The client terminals <NUM> refer to devices operated by respective users to at least input and output data regarding a chat. In addition, the client terminals <NUM> may process various types of content such as games and moving images by themselves, receive data distributed from a content providing server, and output images and sounds as a result of the processed content and received data. The client terminals <NUM> may be any of general devices and terminals including tablets, mobile phones, portable terminals, and personal computers.

The chat servers <NUM> creates a chat space in which a group of users who operate the client terminals 10a, 10b, 10c, ··· have conversations. The chat space is actually a unit of data or a storage area therefor that is given individual identification information, and to which chat participants or their respective client terminals <NUM> are related. Hereinafter, an individual space in which a chat group makes conversation will be referred to as a "chat room. " The chat servers <NUM> establish communication with the client terminals <NUM> of all users joining the chat room, and transfer statement data of respective users to the client terminals <NUM> of other users.

According to the present embodiment, as described above, the chat servers 18a, 18b, 18c, ··· are distributed in different regions. In the illustrated example, the chat servers 18a and 18b are disposed in a region "A" and the chat server 18c is disposed in a region "B" as enclosed by the broken lines. The "region" here may be considered as a unit such as a continent or a country, for example, though the sizes of units which may include a state, a city, a town, a facility, etc., and the criterion for dividing units are not restrictive. One chat server <NUM> or a plurality of chat servers <NUM> may be located in one region.

In response to a chat room opening request from any one of the client terminals <NUM>, the relay point allocation server <NUM> selects a chat server <NUM> suitable for opening the chat room. Chat participants are more likely to have conversations using a common language, compared with players of Internet games, or the like. Therefore, the common language is highly probably their native language. Since users who share the same native language are highly likely to be located geographically closely to each other, the inventor of the present invention has conceived that, if chat servers are located in different "regions," a chat server is basically determined as commonly close to all users joining one chat room.

Based on the above idea, the gateway <NUM> extracts the positional information of a client terminal <NUM> as a request source from a signal transmitted therefrom as representing a request for opening a chat room. Then, the relay point allocation server <NUM> selects, for example, a chat server <NUM> in the region where the client terminal <NUM> as the request source exists. According to the above finding, the chat server <NUM> thus selected is highly probably close to users who will join the chat later. As a result, a communication delay can be held to a minimum in conversation made through the chat server <NUM>.

The load balancers <NUM> are located in the respective regions. According to a request from the relay point allocation server <NUM>, the load balancers <NUM> select one, which is under a low processing burden, of the plural chat servers 18a and 18b located in the same region, and enable the selected chat server <NUM> to open a chat room. In this manner, the burden on the chat relaying process is appropriately distributed. Note that the present embodiment is also applicable to a system for processing content such as a game concurrently. However, as a conventional technology is applicable to such a system, the system will be omitted from description.

<FIG> illustrates an internal circuit configuration of each of the client terminals <NUM>. The client terminal <NUM> includes a CPU (Central Processing Unit) <NUM>, a GPU (Graphics Processing Unit) <NUM>, and a main memory <NUM>. These components are connected to each other by a bus <NUM>. To the bus <NUM>, there is also connected an input/output interface <NUM>. To the input/output interface <NUM>, there are connected a communication unit <NUM> including a peripheral device interface such as USB (Universal Serial Bus) or IEEE (Institute of Electrical and Electronic Engineers) <NUM>, or a network interface for a wired or wireless LAN (Local Area Network), a storage unit <NUM> such as a hard disk drive or a nonvolatile memory, an output unit <NUM> for outputting data to a display device, an input unit <NUM> for receiving data entered from an input device, and a recording medium drive <NUM> for driving a removable recording medium such as a magnetic disk, an optical disk, or a semiconductor memory.

The CPU <NUM> controls the client terminal <NUM> in its entirety by executing an operating system stored in the storage unit <NUM>. The CPU <NUM> also executes various kinds of programs read from the removable recording medium and loaded into the main memory <NUM> or downloaded through the communication unit <NUM>. The communication unit <NUM> also establishes communication with the gateway <NUM> and the chat servers <NUM> and sends and receives various kinds of data required for chats.

The GPU <NUM> has a function as a geometry engine and a function as a rendering processor. The GPU <NUM> carries out a rendering process according to a rendering command from the CPU <NUM> and stores a display image in a frame buffer, not illustrated. The GPU <NUM> then converts the display image stored in the frame buffer into a video signal and outputs the video signal to the output unit <NUM>. The main memory <NUM> which includes a RAM (Random Access Memory) stores programs and data required for processing. The relay point allocation server <NUM> and the chat servers <NUM> may have similar internal circuit configurations.

<FIG> illustrates a configuration of functional blocks of each of the client terminals <NUM> according to the present embodiment. The components illustrated as functional blocks for performing various processes in <FIG>, <FIG>, and <FIG> that will be described later may be hardware-implemented by a CPU, a GPU, a main memory, and other LSI (Large Scale Integration) as illustrated in <FIG>, or may be software-implemented by programs stored in the recording medium or the storage unit and loaded into the memory. Therefore, these functional blocks can be implemented in various forms by hardware only, software only, or hardware and software in combination, as can be understood by those skilled in the art, and should not be limited to either hardware, software, or hardware and software in combination.

The client terminal <NUM> includes an input information acquiring section <NUM> accepting user's actions through an input device, a chat processing section <NUM> performing a process relating to a chat depending on the contents of the accepted action, an output section <NUM> generating data of images and sounds to be output and outputting the generated data to a display device and an output device such as speakers, a communication section <NUM> establishing communication with external devices including the gateway <NUM>, the chat server <NUM>, and the like and sending and receiving data, and a chat information storage section <NUM> storing various items of information regarding a chat.

The input information acquiring section <NUM> acquires from the input device data representing the start and end of a chat, selection of chat companions, statements, and the way in which talks go on. The input device here may be any of general devices required to carry out a chat, such as a controller, a touch panel, a keyboard, a camera, or a microphone that are connected to the client terminal <NUM>. The chat processing section <NUM> performs a process of starting or ending chats, inviting chat companions, joining or leaving chats, etc. according to user's actions acquired by the input information acquiring section <NUM>, and generates an image to be displayed and a signal to be sent to external devices. The chat processing section <NUM> also acquires data representing statements of the user of its own device and statements of chat companions, and generates output data in a predetermined format.

Specifically, in the case of a voice chat, the chat processing section <NUM> compresses sound data and video image data, acquired by the camera and the microphone of the user of its own device, into a format that can be sent, and decodes and expands sound data and video image data that have been compressed and sent from a chat companion. If there are a plurality of chat companions, the chat processing section <NUM> appropriately combines or joins sounds and video images from them. In the case of a text chat, the chat processing section <NUM> generates an image representing text data of a statement sent from a chat companion, together with a text entered by the user of its own device, in a predetermined format such as a time sequence or the like. These processing sequences may be the same as those for general chats.

The output section <NUM> successively outputs the data of images and sounds thus generated to the output device. The output device may be a general display device such as a liquid crystal display or an organic EL (Electroluminescence) display, or a general audio device such as speakers, or a combination thereof that is connected to the client terminal <NUM>. The communication section <NUM> sends a signal requesting the start of a chat or the joining to a chat to the gateway <NUM>. Particularly, for starting a chat, i.e., for opening a chat room, the communication section <NUM> includes the positional information of the client terminal <NUM> in the request signal, thus enabling an appropriate chat server <NUM> to open a chat room.

The communication section <NUM> further sends statement data of the user of its own device to the chat server <NUM> that has opened the corresponding chat room, and receives statement data from a chat companion from the chat server <NUM>. In addition, the communication section <NUM> sends a signal requesting the end of a chat or the leaving from a chat to the chat server <NUM>, and sends a signal representing an invitation to a chat directly or indirectly to the client terminal <NUM> of a companion to be invited to the chat. The chat information storage section <NUM> stores therein identification information of a chat room that has been open and information representing a key for accessing the chat room. The chat information storage section <NUM> also stores information regarding chat companion candidates that have been registered in advance by the user of its own device.

<FIG> illustrates a configuration of functional blocks of the gateway <NUM> and the relay point allocation server <NUM> according to the present embodiment. The gateway <NUM> includes a communication section <NUM> for establishing communication with a client terminal <NUM> and the relay point allocation server <NUM> and sending and receiving data, and a positional information acquiring section <NUM> reading the positional information of the client terminal <NUM> from a signal sent from the client terminal <NUM>.

The communication section <NUM> acquires a signal requesting the opening of a chat room or the joining to an existing chat room from the client terminal <NUM>, and sends the request signal to the relay point allocation server <NUM>. At this time, the positional information acquiring section <NUM> acquires the signal requesting the opening of a chat room from the communication section <NUM>, reads the positional information of the client terminal <NUM> as a signal transmission source, and sends the positional information to the communication section <NUM>. The communication information <NUM> also sends the positional information to the relay point allocation server <NUM>. Moreover, the communication section <NUM> acquires the identification information of the chat room that has been open and information representing a key for accessing the chat room from the relay point allocation server <NUM>, and sends the identification information and the key information to the client terminal <NUM>. Further, the communication section <NUM> relays necessary signals until the client terminal <NUM> and the chat server <NUM> establishes communication therebetween.

The relay point allocation server <NUM> includes a communication section <NUM> establishing communication with the gateway <NUM>, the load balancers <NUM>, and the chat servers <NUM> and sending and receiving data, a chat server selecting section <NUM> matching a client terminal <NUM> and a chat server <NUM> or its region, a selection rule storage section <NUM> storing data representing grounds for matching, a chat managing section <NUM> managing associations between chat servers <NUM> and chat rooms, and a chat information storage section <NUM> storing their associated relations.

The communication section <NUM> acquires a signal requesting the opening of a chat room or the joining to an existing chat room, sent from a client terminal <NUM>, through the gateway <NUM>, and returns information regarding the chat room that has been open through the gateway <NUM> to the client terminal <NUM>. The communication section <NUM> also sends a signal requesting the opening of a chat room to a selected chat server <NUM> or a load balancer in its region, and receives a result of the request. In the latter case, the communication section <NUM> selects an appropriate chat server <NUM> and requests the selected chat server <NUM> to open a chat room. Moreover, the communication section <NUM> relays necessary signals until the client terminal <NUM> and the chat server <NUM> establishes communication therebetween.

The chat server selecting section <NUM> selects a chat server <NUM> that matches the client terminal <NUM> that has requested the opening of a chat room, or a region where such a chat server <NUM> exists. In a case where a region is selected, the load balancer <NUM> may further select a chat server <NUM> depending on the processing burden. Hereinafter, all cases of selecting a chat server, including the latter case, may be referred to as "selection of a chat server. " Information representing grounds for selection is stored in advance in the selection rule storage section <NUM>.

Basically, as described above, the positional information of the client terminals <NUM> and the regions of the chat servers <NUM> are associated with each other such that a chat server <NUM> in the vicinity of the client terminal <NUM> will be selected. On the other hand, even a chat server <NUM> located nearby may have a slower communication speed than a remote chat server <NUM>, depending on the communication environment.

Further, in a case where the region of a chat server <NUM> is selected, a chat server <NUM> located in a region adjacent to the region to which the client server <NUM> belongs may be closer to the client terminal <NUM> or may have a faster communication speed. In view of these considerations, selection rules are preferably prepared to select a chat server <NUM> on the basis of actual distances and communication speeds. Alternatively, the positional information and communication speed of the client terminal <NUM> of a chat companion may be further taken into account. Specific examples will be described later.

The chat managing section <NUM> links the chat server <NUM> that has opened the chat room in response to a request from the client terminal <NUM> with the identification information of the chat room, and stores them in the chat information storage section <NUM>. In a case where there is a request for joining the chat from each client terminal <NUM>, the chat managing section <NUM> specifies the chat server <NUM> as a destination of the joining request on the basis of the identification information of the chat room included in the request signal, and transfers the request to the chat server <NUM>. This procedure allows the chat server <NUM> selected from the plurality of chat servers <NUM> and the client terminals <NUM> to eventually communicate directly with each other.

<FIG> illustrates a configuration of functional blocks of a chat server <NUM> according to the present embodiment. The chat server <NUM> includes a communication section <NUM> establishing communication among the client terminals <NUM>, the relay point allocation server <NUM>, and the load balancers <NUM> and sending and receiving data, a chat room opening section <NUM> opening a chat room, a chat processing section <NUM> appropriately transferring statement data, and a chat information storage section <NUM> storing information regarding a chat.

The communication section <NUM> acquires a signal requesting the opening of a chat room from the relay point allocation server <NUM> directly or through a load balancer <NUM>, and returns the identification information of the chat room that has been open in response to the request signal and information representing a key for accessing the chat room to the relay point allocation server <NUM>. A key that is determined and given uniquely per chat room accessing a chat room will hereinafter be referred to as "token.

The communication section <NUM> further acquires a communication establishing request from a client terminal <NUM>, i.e., a request for joining a chat, from the relay point allocation server <NUM>, and returns a result of the request to the client terminal <NUM> through the relay point allocation server <NUM> and the gateway <NUM>. Moreover, the communication section <NUM> acquires statement data from the client terminal <NUM> with which communication has been established, and transfers the statement data to the client terminals <NUM> of other users who have been joining the same chat.

The chat room opening section <NUM> opens a chat room according to a chat room opening request. Specifically, the chat room opening section <NUM> generates identification information and a token and stores them in association with each other in the chat information storage section <NUM>. When the client terminal <NUM> issues a signal representing a request for joining a chat, the chat room opening section <NUM> checks identification information and a token included in the signal against the information stored in the chat information storage section <NUM>, and, if they agree with each other, permits the client terminal <NUM> to join the chat. The chat room opening section <NUM> stores the identification information of the client terminal <NUM> permitted to join the chat in association with the identification information of the chat room in the chat information storage section <NUM>.

The chat room opening section <NUM> generates information required to establish communication and sends the generated information to the client terminal <NUM> permitted to join the chat through the communication section <NUM>, the relay point allocation server <NUM>, and the gateway <NUM> to the client terminal <NUM>. When direct communication with the client terminal <NUM> is established through a predetermined procedure, the chat processing section <NUM> acquires statement data from each client terminal <NUM> whenever necessary. On the basis of the identification information of the chat room ancillary to the statement data, the chat processing section <NUM> specifies the client terminal <NUM> of another user who is joining the chat on the basis of the identification information of the chat room that is added to the statement data, and transfers the statement data to the specified client terminal <NUM> as a destination.

When a request signal for leaving the chat is sent from the client terminal <NUM>, the chat processing section <NUM> deletes the entry of the client terminal <NUM> as the request source that has been associated with the chat room in the chat information storage section <NUM> and brings the communication to an end. When a request signal for ending the chat itself, the chat processing section <NUM> deletes the entry of the chat room in the chat information storage section <NUM> and brings the communication to an end.

Next, a method of constructing a chat space, which can be realized by the configurations described above, will be described below. <FIG> is a timing chart illustrating a processing sequence for opening a chat room according to the present embodiment. First, the client terminal 10a accepts a request to start a chat from the user (S8). Then, the client terminal 10a requests an authentication server, not illustrated, to authenticate itself according to a predetermined authentication procedure and acquires the authority to access the chat system (S10). The access authority includes the positional information of the client terminal 10a that has been identified by the authentication procedure. Since the global IP address acquired when the client terminal 10a is connected to the Internet provider includes the positional information of the client terminal 10a, the global IP address may be used as the positional information.

The client terminal 10a then issues a request to open a chat room, which includes the access authority (S12). The request is first acquired by the gateway <NUM> that extracts the positional information included in the request signal and transfers the request to the relay point allocation server <NUM> (S14). The chat server selecting section <NUM> of the relay point allocation server <NUM> refers to the selection rule storage section <NUM> and selects the chat server 18a that matches the client terminal 10a or its region (S16). <FIG> illustrates the selection of the region.

The relay point allocation server <NUM> further acquires the address of the load balancer 16a provided in the selected region from the selection rule storage section <NUM> and transfers the chat room opening request to the load balancer 16a (S18). In some of the drawings, among the plural load balancers <NUM>, the load balancer 16a in the selected region is indicated by the solid line, whereas the other load balancers are indicated by the broken lines. The load balancer 16a transfers the chat room opening request to the chat server 18a that has been selected not to unbalance processing burdens among the chat servers <NUM> managed by the load balancer 16a (S20). In some of the drawings, among the plural chat servers <NUM>, the selected chat server 18a is indicated by the solid line, whereas the other chat servers are indicated by the broken lines.

The chat server 18a that has received the chat room opening request performs a process of opening a chat room. Specifically, the chat server 18a generates identification information (room ID (Identification)) of a chat room and a token for joining the chat room. The chat server 18a then returns the generated room ID and token as the result of the chat room opening request, together with the private IP address (server IP) of the chat server 18a itself, to the load balancer 16a (S22). The load balancer 16a transfers the acquired opening request result to the relay point allocation server <NUM> (S24).

Note that, in a case where the relay point allocation server <NUM> directly selects the chat server 18a, the processing of the load balancer 16a can be omitted as a matter of course. The relay point allocation server <NUM> that has received the result of the chat room opening request stores the room ID and the server IP in association with each other in the chat information storage section <NUM>. Therefore, even if a request signal in which only a room ID is designated is subsequently sent from a client terminal <NUM>, the relay point allocation server <NUM> can transfer the request signal to the appropriate chat server 18a. Then, the relay point allocation server <NUM> returns the room ID and the token as the result of the chat room opening request through the gateway <NUM> to the client terminal 10a (S26 and S28).

<FIG> are timing charts illustrating a processing sequence for joining the open chat room, following the processing sequence illustrated in <FIG>. Specifically, the client terminal 10a that has requested the opening of the chat room has already acquired the room ID and the token of the chat room at this time. The client terminal 10a first issues a request to join the chat room that has been open (S30). At this time, the client terminal 10a includes the room ID and the token of the chat room in the signal to be sent.

The joining request signal is sent through the gateway <NUM> to the relay point allocation server <NUM> (S32). The relay point allocation server <NUM> then refers to the chat information storage section <NUM>, identifies the server IP of the chat server 18a associated with the room ID that has been sent, and transfers the joining request signal to the chat server 18a (S34). In response to the request signal, the chat server 18a assigns identification information (peer ID) to the client terminal 10a as a node of the chat, and stores the identification information in association with the room ID in the chat information storage section <NUM> (S35). At this time, the chat server 18a compares the pair of the room ID and the token included in the request signal with those stored in the chat information storage section <NUM>, and registers the pair only when the compared items agree with each other.

Then, the chat server 18a sends the assigned peer ID through the relay point allocation server <NUM> and the gateway <NUM> to the client terminal 10a as the request source (S36, S38, and S40). Next, the client terminal 10a acquires SDP (Session Description Protocol) of its own and sends the SDP through the gateway <NUM> to the relay point allocation server <NUM> (S42 and S44). The SDP represents general information required to establish communication, such as the kind of data to be sent and the IP address and port number of its own.

At this time, the client terminal 10a includes the room ID of the chat room and the peer ID assigned to itself in the signal to be sent. Also in this case, the relay point allocation server <NUM> refers to the chat information storage section <NUM>, identifies the corresponding chat server 18a, and transfers the SDP to the chat server 18a (S46). The chat server 18a stores the sent SDP in association with the peer ID of the client terminal as the transmission source in the chat information storage section <NUM>, acquires SDP of its own, and sends the acquired SDP through the relay point allocation server <NUM> and the gateway <NUM> to the client terminal 10a (S48, S50, and S52).

Then, the client terminal 10a and the chat server 18a searches for a communication route, using each other's SDP and establishes communication with each other (S54). Actually, this processing includes a process for exchanging candidates of ICE (Interactive Connectivity Establishment) between the client terminal 10a and the chat server 18a. The ICE refers to information representing a connectable communication route. In this process as well, the client terminal 10a includes the room ID in the sent signal, allowing the relay point allocation server <NUM> to transfer the signal to the chat serer 18a associated with the room ID. According to these proceedings, it is possible to send and receive data directly between the client terminal 10a and the chat server 18a.

Referring now to <FIG>, the client terminal 10a accepts an operation input to select a chat companion from the user (S56). For example, the client terminal 10a displays a list of friends registered in the chat information storage section <NUM> on the display device and accepts a selecting operation by the user. Then, the client terminal 10a reads the identification information of the selected user or the client terminal 10b operated by the selected user from the chat information storage section <NUM>, and issues a notification for inviting the selected user to the chat to the selected user or the client terminal 10b as a destination (S58). In the illustrated example, the notification is temporarily received by a "session manager" and then transferred therefrom to the companion user (S60).

Now, the session manager is prepared separately from the chat system according to the present embodiment, and is of a general configuration for realizing the transmission and reception of messages, not limited to any particular specific notification procedures. However, the functions of the session manager may be included in the chat system according to the present embodiment. At any rate, the client terminal 10a includes the room ID and the token of the chat room in the invitation notification. If the companion user, having seen the notification, operates the client terminal 10b to join the chat, then the client terminal 10b accepts the action (S62) and issues a request to join the chat room (S64). At this time, the client terminal 10b includes the room ID and the token of the chat room in the signal to be sent.

Subsequently, in the same manner as the joining process of the client terminal 10a, the joining request is sent through the relay point allocation server <NUM> to the chat server 18a (S66 and S68), and the peer ID of the client terminal 10b is returned from the chat server 18a (S70, S72, and S74). Naturally, the client terminal 10b is also registered as joining the chat only in a case where the pair of the room ID and the token is correct, and the peer ID is sent thereto. Thereafter, communication is established between the client terminal 10b and the chat server 18a through the same proceedings (not illustrated) as those described above with reference to <FIG> (S76).

The proceedings relating to the client terminal 10b illustrated in <FIG> are also carried out similarly with respect to the client terminals <NUM> of all users designated as chat participant candidates. Then, when the chat server 18a transfers statement data of the user of each of the client terminals <NUM> to the other client terminals <NUM>, conversation is established among the client terminals <NUM> through the chat server 18a as a relay point. With this configuration, since the companion to which each client terminal <NUM> is to be connected for the chat is limited to one chat server <NUM>, stable communication is possible, regardless of the number of chat participants.

<FIG> is a diagram illustrating a structural example of data stored in the selection rule storage section <NUM> of the relay point allocation server <NUM>. In this example, selection rules <NUM> have a structure in which a terminal region field <NUM> representing the identification information of the regions where the client terminals <NUM> exist and a server region field <NUM> representing the identification information of the regions where the chat servers <NUM> exist are associated with each other. For example, the region of a client server <NUM> represented by a code "<NUM>" is associated with the region of a chat server represented by identification information "A.

The unit of regions found from the positional information of the client terminals <NUM> and the unit of regions given to the chat servers <NUM> may be the same as or different from each other. The units of both the regions may be related to each other such that one of them is included in the other, or may partly overlap each other, or may not overlap each other at all. At any rate, for each of the unit regions of the client terminals <NUM>, the region of a chat server <NUM> capable of permitting communication at a speed as fast as possible is predetermined and prepared as the selection rules <NUM>.

The chat server selecting section <NUM> of the relay point allocation server <NUM> refers to the selection rules <NUM> and acquires the region of a chat server <NUM> that corresponds to the positional information of a client terminal <NUM> that is included in a signal representing a chat room opening request, thereby selecting an optimum chat server <NUM>. Note that various kinds of parameters and their format illustrated in <FIG> and <FIG> are given by way of example only and are not limited to those illustrated. For example, the selection rules <NUM> may include a field representing the identification information of the chat servers <NUM> instead of the server region field <NUM>, so that the chat servers <NUM> can directly be selected. The regions stored in the server region field <NUM> are separately associated respectively with the load balancers <NUM> or the chat servers <NUM> disposed in the respective regions.

<FIG> illustrates a structural example of data stored in the chat information storage section <NUM> of the relay point allocation server <NUM>. In this example, chat information <NUM> has a structure in which a server IP field <NUM> representing the IP addresses of the chat servers <NUM> and a room ID field <NUM> representing the identification information of chat rooms that have been open are associated with each other. For example, the chat server <NUM> whose server IP is "<NUM>. <NUM>" has opened three chat rooms whose respective room IDs are "<NUM>," "<NUM>," and "<NUM>.

The relay point allocation server <NUM> updates the entries of the chat information <NUM> on the basis of responses from the chat servers <NUM> that have opened chat rooms. This allows server IPs to be derived from the room IDs, making it possible to transfer subsequent request signals from client terminals <NUM> to appropriate chat servers <NUM>. When a chat is finished by a user's action, the relay point allocation server <NUM> acquires a notification to that effect from the chat server <NUM>, and deletes the entry from the room ID field <NUM>.

<FIG> illustrates a structural example of data stored in the chat information storage section <NUM> of a chat server <NUM>. In this example, chat information <NUM> has a structure in which a room ID field <NUM> representing the identification information of chat rooms opened by its own device, a token field <NUM> representing the key information required to join the respective chats, and a peer ID field <NUM> representing the identification information of client terminals <NUM> that have been joining the chats are associated with each other. For example, the token of the chat room whose room ID is "<NUM>" is "2A," and the chat is joined by five client terminals <NUM> whose peer IDs are "01aa," "02ac," "00cv," "04ka," and "02pp.

A chat server <NUM> issues a room ID and a token for opening a chat room, and stores them in association with each other in the room ID field <NUM> and the token field <NUM>, respectively. The chat server <NUM> permits a client terminal <NUM> to join the chat only if the pair of the room ID and the token included in a chat joining request from the client terminal <NUM> agree with the room ID and the token that have been stored, issues a peer ID to the client terminal <NUM> as the request source, and registers the peer ID in the peer ID field <NUM>. Each peer ID is separately associated with information required to send and receive data, such as SDP and ICE determined when communication has actually been established. During the chat, the client terminal <NUM> adds the room ID and the peer ID to statement data of the user and sends them to the chat server <NUM>.

In response to the sent data, the chat server <NUM> refers to the chat information <NUM>, acquires the peer IDs corresponding to the room ID, and transfers the statement data to the other client terminals <NUM> that has been joining the chat. If the user of either one of the client terminals <NUM> whose peer IDs are listed as entries operates to leave the chat, then the chat server <NUM> deletes the entry from the peer ID field <NUM>. If the user operates to end the chart, then the chat server <NUM> deletes the room ID and the entries in the corresponding fields.

<FIG> is a diagram that is illustrative of a policy for the relay point allocation server <NUM> according to the present embodiment to select a chat server <NUM> for opening a chat room or a region thereof. <FIG> illustrates the positional relation among the client terminals 10a, 10b, and 10c and the chat servers 18a, 18b, and 18c. The area covered by <FIG> may represent an entire global region or may represent a smaller region than that. The most simple criterion by which a chat server can be selected is to take only distances into account. For example, since the chat server 18b is closest to the client terminal 10a, the chat server 18b is selected to open a chat room.

On the other hand, in a case where the client terminal 10a or a region "a" to which the client terminal 10a belongs is included mostly or wholly in a region A to which the chat server 18a belongs, the chat server 18a in the region A can be selected. This policy has a high affinity with the characteristics of chats described above. For example, in a case where the region A is regarded as a country, inasmuch as the chat participants who chat using the same language are highly probably in the same country, it is highly possible that the chat server 18a is generally closer to the chat participants even if chat participants change by subsequently joining or leaving the chat.

A communication bandwidth may be taken into account in addition to such a distance or areal viewpoint. For example, even though the chat server 18b is closest to the client terminal 10a, it may be considered that a network link existing in a sufficient communication environment lies between the client terminal 10a and the chat server 18a. In this case, a low-delay chat can be achieved by selecting the chat server 18a.

For constructing a chat system, therefore, selection rules <NUM> are prepared by taking into account either the inclusive relation between distance and region or the communication bandwidth or a combination thereof. Since the client terminals 10a, 10b, and 10c of the users who have conversations using the same language in chats are highly probably present at close distances, e.g., within one country in the world, as described above, selecting the chat server 18a or the chat server 18b in response to a chat room opening request from the client terminal 10a makes it highly possible to achieve highspeed communication with the client terminals 10b and 10c of other chat participants.

Specifically, it is possible to avoid selecting the chat server 18c that is remote from any one of the client terminals 10a, 10b, and 10c, reducing communication delays due to unnecessary routes. However, selection rules may not be fixed as one communication route has different communication speeds depending on how it is used. For example, each of the client terminals 10a, 10b, and 10c periodically communicates with all the chat servers 18a, 18b, and 18c and measures communication speeds, and indicates the results through the gateway <NUM> to the relay point allocation server <NUM>. Based on the results, the relay point allocation server <NUM> updates associations in selecting conditions.

For example, if the chat server providing the highest communication speed changes from the chat server 18b to the chat server 18a as indicated by the results measured by the client terminal 10a, the relay point allocation server <NUM> updates the server region associated with the terminal region "a" from the region of the chat server 18b to the region A of the chat server 18a in the selection rules <NUM>. In this manner, the chat server <NUM> that is capable of communicating at the highest speed at the time of opening a chat room can be used.

As an application of the above approach, a chat server <NUM> can be selected in view of communication speeds between not only the client terminal 10a that has requested the opening of a chat room, but also the client terminals 10b and 10c of the chat companions, and the chat server <NUM>. Specifically, in a case where a user joining a chat or a user about to join a chat is already known, average values of communication speeds between the chat servers <NUM> and the client terminals <NUM> are calculated. Then, the chat server <NUM> with the highest average speed is selected to achieve a chat with a smallest delay as a whole.

<FIG> illustrates a configuration of functional blocks of a client terminal <NUM> in a mode for selecting a chat server <NUM> on the basis of measured values of communication speeds. Those blocks which have the same functions as those of the client terminal <NUM> illustrated in <FIG> are denoted by identical reference signs, and will be omitted from description below. The client terminal 10a illustrated in this figure includes an input information acquiring section <NUM>, a chat processing section <NUM>, an output section <NUM>, and a chat information storage section <NUM> as is the case with the client terminal <NUM> illustrated in <FIG>. According to the present mode, the client terminal 10a also includes a communication section 50a that has a speed measuring section <NUM> periodically measuring communication speeds between itself and the chat servers <NUM>.

The speed measuring section <NUM> periodically establishes communication with all the chat servers <NUM> or candidate chat servers <NUM> that have been narrowed down on the basis of distances or communication bandwidths, and measures communication speeds by sending and receiving predetermined data. A general technology is applicable to the measuring process itself. The communication section 50a basically functions similarly to the communication section <NUM> of the client terminal <NUM> illustrated in <FIG>. However, when the speed measuring section <NUM> measures communication speeds, the communication section 50a also sends the data of the measured communication speeds through the gateway <NUM> to the relay point allocation server <NUM>.

The functional blocks of the relay point allocation server <NUM> may be similar to those illustrated in <FIG>. However, the selection rule storage section <NUM> stores therein actually measured values of communication speeds sent from each of the client terminals <NUM> per combination of the client terminals <NUM> and the chat servers <NUM>. Then, the chat server selecting section <NUM> updates information if the associations in the selection rules <NUM> illustrated in <FIG> need to be updated, i.e., if the fastest chat server has changed, as described above.

Alternatively, at the time that a request is made to open a chat room without preparing the selection rules <NUM>, the fastest chat server <NUM> for the client terminal 10a that has issued the opening request may be selected. Further alternatively, the chat server <NUM> whose average communication speed is highest among all the client terminals <NUM> that are going to join a chat may be selected, as described above. The users who are going to join a chat may be designated by the user who has request the opening of the chat or may be presumed from records in the past.

<FIG> is a flowchart of a processing sequence for selecting a chat server <NUM> on the basis of average values of communication speeds with a plurality of client terminals. The flowchart corresponds to the processing of S12 through S16 illustrated in <FIG>. First, the speed measuring sections <NUM> of the client terminals 10a and 10b establish communication with the chat servers, measure communication speeds (S80a and S80b) therewith, and send measured results to the relay point allocation server <NUM> (S82a and S82b). Targets to be measured and sent are not limited to any kinds insofar as they are parameters that directly or indirectly represent communication speeds.

Though only the two client terminals 10a and 10b are illustrated as representatives in <FIG>, the processing sequence is periodically carried out by all the client terminals <NUM>. The relay point allocation server <NUM> progressively stores last measured communication speeds per combination of the client terminals <NUM> and the chat servers <NUM>. The client terminal 10a that is operated by the user to open a chat sends a request to open a chat room to the relay point allocation server <NUM> (S84). At this time, the client terminal 10a also simultaneously sends the identification information of companion users who are going to join the chat or the client terminals 10b, 10c, ··· thereof.

The relay point allocation server <NUM> that has received the request calculates, per chat server <NUM>, average values of communication speeds among the client terminals <NUM> of the users who are going to join the chat and the chat server <NUM> (S86). If it is assumed herein that a communication speed between an nth client terminal among the client terminals <NUM> that are going to join the chat and an Nth chat server is represented by S(n,N), then an average communication speed Save(N) calculated with respect to the Nth chat server is obtained by the following equation: <MAT>.

Then, the relay point allocation server <NUM> selects a chat server <NUM> that attains the highest average speed Save(N) as the server for opening the chat room (S88).

Note that, in the illustrated example, the significance of chat servers is compared on the basis of the actually measured values of communication speeds. However, a chat server may be selected on the basis of the distances between the client terminals <NUM> that are going to join a chat and the chat servers <NUM>. In this case, if the client terminals <NUM> are mobile terminals, then the relay point allocation server <NUM> collects the distances between the client terminals <NUM> and the chat servers <NUM> as well as the communication speeds. If the client terminals <NUM> are installed terminals, then since the distances are fixed, they can be acquired in advance.

At any rate, the relay point allocation server <NUM> may select a chat server <NUM> whose average value of the distances from the client terminals of those who are going to join a chat is smallest. Note that the parameters used as a basis for selecting a chat server are not limited to communication speeds and distances, but may be anything affecting delay times taken until statements reach chat companions. At any rate, a chat server can uniquely be determined by similarly comparing average values with respect to all the client terminals. Alternatively, a chat server may be selected from a multilateral standpoint by comparing weighted sums of average values of a plurality of parameters as scores.

According to the present embodiment described above, in a chat system in which a plurality of users have conversations with each other via a network, a plurality of chat servers for relaying statement data sent from client terminals are disposed in different regions, and a relay point allocation server for selecting an appropriate chat server is provided. Since the chat servers relay statement data, communication routes to be secured by the client terminals are simplified, making it possible to provide a chat environment that is stable, regardless of the number of chat participants, compared with peer-to-peer connections. Moreover, as communication routes required for chats are limited, other pieces of content to be enjoyed concurrent with the chats are less likely affected by the chats. Further, inasmuch as actual companion's terminals as viewed from the client terminals are made abstract, security problems such as attacks and impersonations from malicious users are easier to avoid.

The relay point allocation server selects an appropriate chat server on the basis of distances, communication bandwidths, communication speeds, etc. for thereby minimizing delays until statements reach chat companions through the chat server. Because of the characteristics of chats that they are conversions made using one language, the chat participants are highly probably present at positions that are geographically closely to each other, so that the relative merits of the chat server as viewed from the client terminals are basically common among the chat participants irrespective of the number of the chat participants. Based on these features, an optimum chat server is selected to realize a chat system that is stable and causes less delays.

Claim 1:
A relay point allocation server (<NUM>) in a chat system in which a plurality of members that each have been joining a chat space have conversations with each other via a network using client terminals (10a, 10b, 10c), comprising:
a communication section (<NUM>) acquiring an opening request to open the chat space from any one of the client terminals (10a, 10b, 10c), the opening allowing members via the client terminals (10a, 10b, 10c) to relay statement data in the chat space; and
a chat server selecting section (<NUM>) requesting a chat server (18a, 18b, 18c) selected on a basis of predetermined rules from a plurality of chat servers (18a, 18b, 18c) disposed in a distributed fashion external to the relay point allocation server (<NUM>) and relaying statement data transmitted among the client terminals in response to the opening request, to relay statement data in the chat space corresponding to the opening request, wherein the chat server selecting section (<NUM>) selects the chat server (18a, 18b, 18c) on the basis of predetermined rules including at least any one of positional relation among the client terminals (10a, 10b, 10c) and regions in which the chat servers (18a, 18b, 18c) are present and communication speeds among the client terminals (10a, 10b, 10c) and the chat servers (18a, 18b, 18c).