FIG. 2 illustrates a community of nodes 201. A newly joining node 203 may join the community 201 by establishing a network connection 207 to one of the already existing nodes within the community 201. Any node within the community 201 can send a message 205 to the community 201. The 5 message 205 may contain unique identifiers represented as bit patterns within the message to indicate the originator of the message as well as the instance number of a message. A computer name, network ID or username may be used to indicate the message originator and a unique number may 10 indicate the message instance number. These two identifiers are used so that each node within the community can determine who sent a particular message and if the message had already been received based on the message instance number. A message instance number may be defined as a globally 15 unique random number that increases by 1 for each message sent by a particular node within the group. The message instance numbers may be unique for the community in which they belong. When a newly joining node 203 joins the community, a message can be sent to all other nodes indicating 20 that a new node has joined the community. A similar process occurs when a node leaves a community.
There may be cases when a community needs to reorganize the connections between the nodes of the community 201. Standard methods exist to elect nodes to become parents or 25 leaders of other nodes thereby reducing the burden on any given node within the community.
FIG. 3 is a flowchart outlining the steps in one embodiment of the present invention taken to establish and join a dynamically created community. The method starts 301 when a 30 search request message is sent 303. The request message is received by one or more receivers 305 and each receiver compares the request message to its own topic profile. If the contents of the request message match one or more of the recipient's topics 307 then the recipient responds 311 to the 35 search request with the recipient's matching topic and other data such as how many users are currently in the community and a maximum number of users. If the contents of the request message do not match then the process ends 313. The requestor compares the response received and decides 40 whether or not to join the community by establishing a connection to the other node 315.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable
others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. The invention claimed is:
1. A method to control access of a first computer node of a plurality of nodes within a peer-to-peer (P2P) network to a chat community comprising a subset of the plurality of nodes other than the first node that are engaged in a chat about a topic by exchanging messages across the P2P network, the method comprising:
receiving, by all nodes of the subset, a request message across the P2P network from the first node, the request message indicating a request of the first node to access the chat community;
determining by each of the nodes of the subset whether to perform a comparison of contents of the request message with a topic profile list stored locally on each node;
sending a response message from each of the nodes whose comparisons indicate the contents match the topic across the P2P network to the first node;
determining whether the first node should access the chat community based on the response messages; and
j oining the first node to at least one of the responding nodes to enable access of the first node to the chat community based on the determination that the first node should access the chat community,
wherein each response message includes the topic, a count of how many users are currently in the chat community, and a count of a maximum number of users allowed to engage in the chat community.
2. The method of claim 1 wherein the request message and the response message each have a unique node identifier and a unique message number.
3. The method of claim 1 wherein a message sent by any node within the chat community is then forwarded to all nodes within the community.
4. The method of claim 1, wherein connections between the nodes are redistributed to balance network traffic.
5. The method of claim 1, wherein the local profile topic list contains keywords for each node to match against the search request from the requesting node.
6. The method of claim 1, wherein all nodes in the community receive at least one copy of every message exchanged.
7. The method of claim 1, wherein a node leaves a community by disconnecting its network connection.
8. The method of claim 1, wherein all nodes within the community are notified when a new node joins or leaves the chat community.