Collaboration Server Updated

camcollab

A few months ago, we have released a node library to easily add real-time collaboration to any HOOPS Communicator based application. Since then quite a few new features have been added to the Collaboration server:

  • A new plugin architecture that makes it easier to extend the functionality of the library
  • Support for Persistent Room Data
  • More robust support for geometry creation
  • Ability to disable syncing for cameras and selection
  • Two plugins for displaying user-avatars (see above GIF) and support for the new textbox class.

You can download the library and learn more here:

1 Like

I am unable to open the demo url in the readme file. Is there a video or other way to view it live demo of the this library?

After I run it, the following interface appears. How can I operate it to achieve collaboration?

Hello @619944680,

The collaborator demo is effectively a screen mirroring application so you will need two screens (or two browser tabs) viewing the same model. You can also check out the Collaborator Demo as part of our cloud demo suite.

Thanks,
Tino

Hello,Tino.

I want to download the code package from the GitHub connection in Collaborator Demo, but GitHub has been unable to open it. Excuse me, is the link invalid? It is also possible that I am unable to access foreign websites. If the link has not expired, please let me know.

Thanks.

Are you getting an error when you click on Download ZIP in the GitHub repo:

Yes, it may be that my network here cannot access GitHub. I asked my colleague to help me download it.

Hi,Tino,

I followed the steps in the compressed readme file and finally executed ‘npm’. The error is as follows:

I will follow the prompts to install Express again,but it still reports an error,
The error message after installing Express is as follows:

Is there anything else I need to configure to run this code package?

Thanks.

The version techsoft3d/Collaborator is an older version and has largely been superseded by techsoft3d/ts3d-hc-collabServer. Besides the core mirroring feature, the latter version includes camera synchronization and basic chat functionality — in addition to a more robust and familiar model browser.

It looks like based on your screenshot, you were able to get ts3d-hc-collabServer up and running. Is this not the case?

At first, I was running ts3d hc collabServer.
Later, when I saw the GitHub link in Collaborator Demo, I thought techsoft3d/Collaborator was the latest.Then I can run normally.

Thanks.

Hello, Tino.

I want to set a user as the owner of a room, and the room owner can set which users to collaborate with. Can it be achieved?

Thanks.

Yes, this should be possible. The collaboration demo is using a 3rd party application called Socket.IO for the communicaton features of the room. You will have to do the necessary research to implement the desired functionalities.

1 Like

I am trying to use the collaboration library and SocketIo has successfully connected,
and the following code has been added,

hcCollab.initialize(hwv, null, 'http://192.270.1.25:5655/') hcCollab.registerMessageReceivedCallback(hcCollabMessageReceived) hcCollab.connect('default', 'User' + Math.floor(Math.random() * 9999))

there are no errors reported,
But the two scenes are not synchronized.
What could be the possible reason?

@619944680,

When viewing the model, are you able to see the users:

If not, the URL may not be correct. On that note, the octet 270 seems to be out of range as I believe in an IPv4 address, the values are range-bound to 0 to 255.

Thanks,
Tino

Yes,I can see the users,users can also send messages to each other.
It’s just that the model scene cannot be mirrored.

If there have been no other changes to the code, I would expect mirroring to work given that different users are being displayed in the viewer.

One follow-up question is regarding the IPv4 address you provided (http://192.270.1.25:5655). Is this correct? The octet 270 is beyond the range of 0 to 255.

The IPv4 address was randomly written by me in the post, and in my code, it is the address where I run the SoketIo service.This demo is actually running locally on my computer.

I recorded a short video in the compressed file, and in the video, I can see the users. Users can send and receive messages, but the model scene cannot be mirrored, and the browser console does not report any errors. May I ask which part of the code the mirroring depends on for execution? I would like to check if I have made any changes to the code that executes the mirroring .
20250113_110707.zip (566.3 KB)

Please see the function handleMessage(message) in hcCollab.js. Also, please review the notes/README section of the GitHub post for additional context that may be relevant to your application.

I found that the if judgment in the function handleMessage(message) method keeps returning.

Causing the code of the subsequent to fail to execute.Here is the code I used to establish a connection with the collaboration server.


Is the function hcCollabmessageReceived written incorrectly?

Given that you’ve identified that the if statement is returning early, perhaps take a look at this function for clues:

async function processCallbacks(message,send =false) {
    for (let i=0; i<messageReceivedCallbacks.length; i++) {
        let callback = messageReceivedCallbacks[i];
       if (!await callback(message,send)) {
            return false;
        }
    }
    return true;
}

Also, the function hcCollabMessageReceived looks markedly different than the original so that could be having an effect. It’s curious that in your implementation, case "initialState": is empty.

On that note, if your objective is to fully customize the hcCollab project, we recommend the approach of starting with the base hcCollab project and then start introducing changes more gradually. This will make it easier to debug — moreso than sharing screenshots of code snippets.

Okay, maybe I overlooked some code during the process of customizing the hcCollab project. I will try as you suggested.
Thanks,Tino. :wink: