PDA

View Full Version : Add-On Releases - Duckways: Shoutbox | Realtime using NodeJS & Socket.io


Jorandh
08 Aug 2018, 16:55
https://www.vbulletin.org/forum/external/2018/03/5.png
Duckways: Shoutbox | Realtime using NodeJS & Socket.io



What is this mod all about?

A lot of forums come with a shoutbox. However, we've seen so many resource eating shoutbox versions that we thought it would be cool to release one based on NodeJS and Socket.io.
This shoutbox does not refresh it's content every X seconds for every user. Instead, it pushes the new message to all users using a websocket. Blazing fast with less resource consumption.

(!!) To use this plugin you need to have NodeJS/NPM installed on your webserver. This requires some server knowledge, so if you can't do it yourself please contact your hosting company or use our installation service (Email us at quack@duckways.com).(!!)

(!!) We now also offer a hosted node version, which you can run right away without installing anything server-side. This comes at the price of $4,95 a month. Contact us on quack@duckways.com for more info or to buy.(!!)

https://www.vbulletin.org/forum/external/2018/08/6.png (https://picr.me/image/Vu2Qa)

Features free version
- Parses bbcode/smiley's
- Set usergroup permissions to view the shoutbox
- Set usergroup permissions to post in the shoutbox
- Users can edit their own shouts

Features pro version
- Parses bbcode/smiley's
- Set amount of shouts to display
- Set usergroup permissions to view the shoutbox
- Set usergroup permissions to post in the shoutbox
- Set usergroup permissions to edit shouts (moderator)
- Set usergroup permissions to delete shouts (moderator)
- Users can edit their own shouts
- Shoutbox archive in AdminCP to read back (including deleted shouts & who deleted them!)



Buy the pro version

Lifetime license for 1 website ( $24,95 ) (https://duckways.com/store/buy/2)
Lifetime license for unlimited website ( $74,95 ) (https://duckways.com/store/buy/3)
Installation service ( $65 ) (https://duckways.com/store/buy/3)
We now also offer a hosted node version, which you can run right away without installing anything server-side. This comes at the price of $4,95 a month. Contact us on quack@duckways.com for more info or to buy.



About Duckways

We're a company with a team of developers who have been working a lot on a vBulletin 4 system for two of our customers. The largest one with over 200,000 users and 4 million posts.
This one migrated to vBulletin 5 recently and we've faced quite some issues in vBulletin 5 which we'll fix by writing custom modifications. Some of those, which are worth sharing, will be added here on vBulletin.org. If you're missing a feature or add-on, please feel free to contact us.



How to install:


Upload all files from the "upload" folder to your forums directory.
Log in on SSH and navigate to the folder {forumroot}/core/packages/duckwaysshout/node
Run the command "npm install" (Make sure you have NodeJS / NPM installed on your server!
Start your node server using the command "node server.js", it should now start listening on the port that is set in the server.js file. Please make sure your firewall doesn't block this port. If you want to keep the server running while you leave the terminal, please use one of the many solutions written on StackOverflow:
In AdminCP -> Plugins & Products -> Manage Products -> Add/Import Product in the "OR import the XML file from your server" and fill in: ./core/packages/duckwaysshout/xml/product_duckwaysshout.xml
Go change every usergroup you have and set the permissions for the shoutbox.
Final step: Go to your homepage and open de website editor. You'll find a new widget you can drag onto your page: Duckways Shoutbox. Save the page after you gave the shoutbox a nice spot and you're ready to go!




Version history


1.0.0 - BETA release
1.0.1 - Fixed a few bugs, updated node and changed ports. Added setting for socket URL. Added new features in PRO version.




Support

Please use this thread to ask questions or to report bugs. PRO version users can email us at quack@duckways.com for quick support.

Jorandh
08 Aug 2018, 16:56
- First post reserved -

We're currently preparing the zip files for upload, they will be uploaded by the dev team ASAP.

Jorandh
09 Aug 2018, 02:05
Sorry guys, there's some delay in preparing the zip file. We originally zipped it with Mac OS resulting in inclusion of .DS_Store files. We need to get rid of those tomorrow.

Thangvip9x
09 Aug 2018, 02:49
I don't see any file =))

Jorandh
09 Aug 2018, 05:11
I don't see any file =))

Read the post above, it's coming in :) Just woke up and will be in the office in a few hours from now to finish things.

Fleiding
09 Aug 2018, 11:42
Awesome! Which version of NodeJS and Socket.io is necessary to run this mod? Then I can let my host know to install everything.

Jorandh
09 Aug 2018, 12:12
Awesome! Which version of NodeJS and Socket.io is necessary to run this mod? Then I can let my host know to install everything.

It comes with an package.json. All you need to do is installing npm and run the command 'npm install' in the plugin directory once. :) That will download all the right package versions, like SocketIO :)

Jorandh
10 Aug 2018, 05:21
ZIP file uploaded!

In Omnibus
10 Aug 2018, 07:03
It works. It appears to have a couple of minor bugs. The refresh button has to be pressed to get the shout to appear. Editing shouts does not work.

Jorandh
10 Aug 2018, 12:23
It works. It appears to have a couple of minor bugs. The refresh button has to be pressed to get the shout to appear. Editing shouts does not work.

Thats weird, refresh button is only there as a backup. Socketio is shooting a realtime push to all users with the websocket. Sounds like your port isn't listening right for your socket.

Please check your console in the browser on the page where it shows the shoutbox, or hit me up with an URL so I can check it for you :)

Edit function should work too- make sure you set the permissions for all usergroups (Go to usergroups, click edit behind the group and find the permissions on the edit page).

In Omnibus
10 Aug 2018, 14:49
Thats weird, refresh button is only there as a backup. Socketio is shooting a realtime push to all users with the websocket. Sounds like your port isn't listening right for your socket.

Please check your console in the browser on the page where it shows the shoutbox, or hit me up with an URL so I can check it for you :)

Edit function should work too- make sure you set the permissions for all usergroups (Go to usergroups, click edit behind the group and find the permissions on the edit page).

I have the permissions set correctly and the Web Console isn't showing any errors.
After clicking "Enter" or "Shout" the shoutbox is still white. After clicking "Refresh" the shout appears. Editing doesn't work at all. It simply re-posts the original shout. Again, no error in the console. I'm going to try changing the port first. I'll let you know what happens.

Jorandh
10 Aug 2018, 20:58
I have the permissions set correctly and the Web Console isn't showing any errors.
After clicking "Enter" or "Shout" the shoutbox is still white. After clicking "Refresh" the shout appears. Editing doesn't work at all. It simply re-posts the original shout. Again, no error in the console. I'm going to try changing the port first. I'll let you know what happens.

Thanks, let me know how it goes! I just did a fresh install of the plugin on a brand new vBulletin v5.3.4 setup and it worked right away as is should. Maybe try removing the folder 'node_modules' in core/packages/duckwaysshout/node and then run 'npm install' again from the same location.

Happy to help if it doesn't work out for you. Just leave me the details in a PM or on quack@duckways.com!

Jorandh
10 Aug 2018, 23:35
We just set up a demo here: https://vbulletin.duckways.com/forums/

Demo user 1:
username: demo1
password: DemoUser1!

Demo user 2:
username: demo2
password: DemoUser2!

Demo user 2 has moderation permissions (edit and delete shouts made by others).




We just updated a few components and will upload release 1.0.1 soon.

Jorandh
11 Aug 2018, 00:18
Version 1.0.1 uploaded. This should fix issues like @In Omnibus reported and added some new settings.

Fleiding
11 Aug 2018, 07:49
We just set up a demo here: https://vbulletin.duckways.com/forums/
I have to click Refresh every time I posted, edited, and deleted a message.

Safari is showing the following errors in the console:
[Error] Blocked a frame with origin "https://staticxx.facebook.com" from accessing a frame with origin "https://vbulletin.duckways.com". Protocols, domains, and ports must match.
Global Code (web_rtc_wrapper.js:260)
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969951664-0 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969953124-1 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969955157-2 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969958179-3 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969962203-4 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969967232-5 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969972253-6 due to access control checks.

I'm still working with my host to get all the required items installed at my web server, because the same thing is happening now on my forum at the moment.

Edit: Is it possible to display new messages on top?

Jorandh
11 Aug 2018, 12:27
I have to click Refresh every time I posted, edited, and deleted a message.

Safari is showing the following errors in the console:
[Error] Blocked a frame with origin "https://staticxx.facebook.com" from accessing a frame with origin "https://vbulletin.duckways.com". Protocols, domains, and ports must match.
Global Code (web_rtc_wrapper.js:260)
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969951664-0 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969953124-1 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969955157-2 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969958179-3 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969962203-4 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969967232-5 due to access control checks.
[Error] Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin https://vbulletin.duckways.com is not allowed by Access-Control-Allow-Origin. (socket.io, line 0)
[Error] XMLHttpRequest cannot load https://vbulletin.duckways.com:2096/socket.io/?r_var=1&EIO=3&transport=polling&t=1533969972253-6 due to access control checks.

I'm still working with my host to get all the required items installed at my web server, because the same thing is happening now on my forum at the moment.

Edit: Is it possible to display new messages on top?

Sorry, our server.js wasn't running. I just set it to permanent run using screen. It should now work as aspected.


You should go to the folder "core/packages/duckwaysshout/node/", run "npm install" and then run "node server.js". If you run your website using ssl, please edit server.js to use the SSL certs.

Fleiding
11 Aug 2018, 12:59
After running the command "npm install" I get the following in my terminal:
npm WARN package.json socket-chat@0.0.1 No repository field.
npm WARN package.json socket-chat@0.0.1 No README data
npm WARN package.json callsite@1.0.0 No repository field.
npm WARN package.json has-binary@0.1.7 No repository field.
npm WARN package.json indexof@0.0.1 No repository field.
npm WARN package.json object-component@0.0.3 No repository field.

Sorry, our server.js wasn't running. I just set it to permanent run using screen. It should now work as aspected.
It does! :)

If you run your website using ssl, please edit server.js to use the SSL certs.
I edited server.js and have it running successfully but my console is telling me:
[Error] Failed to load resource: the server responded with a status of 404 () (socket.io, line 0)

Jorandh
11 Aug 2018, 20:14
After running the command "npm install" I get the following in my terminal:
npm WARN package.json socket-chat@0.0.1 No repository field.
npm WARN package.json socket-chat@0.0.1 No README data
npm WARN package.json callsite@1.0.0 No repository field.
npm WARN package.json has-binary@0.1.7 No repository field.
npm WARN package.json indexof@0.0.1 No repository field.
npm WARN package.json object-component@0.0.3 No repository field.


It does! :)


I edited server.js and have it running successfully but my console is telling me:
[Error] Failed to load resource: the server responded with a status of 404 () (socket.io, line 0)

The last error in your console basically tells you that it wasn't able to connect to socketio. Please make sure you're using the plugin version 1.0.1 which has been added to the first post AND that the port (default now is 2096) is allowed in your firewall :) If not, make sure to add it!