Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
service:jsondb [2022/11/28 18:06] – Changed section formatting for table of contents; added a Best Practices section Nightfoxservice:jsondb [2022/11/28 22:18] – Fixed links to other pages on the wiki Nightfox
Line 4: Line 4:
 \\ \\
 ===== Updating services.ini and json-service.ini ===== ===== Updating services.ini and json-service.ini =====
-Synchronet provides this via the script json-service.js (in the exec directory).  To enable the JSON service, add the following lines to your ctrl/[['config:services.ini']] if not already there:+Synchronet provides this via the script json-service.js (in the exec directory).  To enable the JSON service, add the following lines to your ''[[dir:ctrl]]''/''[[config:services.ini]]'' if not already there:
 <file> <file>
 [JSON] [JSON]
Line 13: Line 13:
 Note the port number is 10088.  This is a common port number to use for the JSON service.\\ Note the port number is 10088.  This is a common port number to use for the JSON service.\\
 \\ \\
-For storing data to be accessed this way, Synchronet uses the concept of JSON "databases" Each JSON database is given a name and are configured in ctrl/json-service.ini.  For instance, there is a one-liners script in xtrn/oneliners, and if you want to host one-liners, you would need these lines in ctrl/json-service.ini:+For storing data to be accessed this way, Synchronet uses the concept of JSON "databases" Each JSON database is given a name and are configured in ''[[dir:ctrl]]''/json-service.ini.  For instance, there is a one-liners script in xtrn/oneliners, and if you want to host one-liners, you would need these lines in ctrl/json-service.ini:
 <file> <file>
 [oneliners] [oneliners]
Line 23: Line 23:
  
 ===== Reading from & writing to a JSON database=====  ===== Reading from & writing to a JSON database===== 
-Most basically, all that is really required to interact with a JSON database is writing (adding/updating data) and reading (getting data from the JSON database).  The top of json-client.js (in sbbs/exec/load) has a list of relevant functions for working with a JSON database.  Assuming the JSON client object is jsonClient, the two functions for reading from and writing to a JSON database are:+In a JavaScript mod/door/game (a 'client'), first you will need to have your script include json-client.js (in the ''[[dir:exec]]''/''[[dir:load]]'' directory).  Before you use JSONClient, add this to your JS script: 
 +  require("json-client.js", "JSONClient"); 
 +Then, create a JSONClient object.  When doing so, you will need to provide the server (host) name/IP address and the port number as parameters.  For example, to connect to your own BBS (you could use "127.0.0.1" or "localhost"): 
 +  var jsonClient = new JSONClient("127.0.0.1", 10088); 
 +Most basically, all that is really required to interact with a JSON database is writing (adding/updating data) and reading (getting data from the JSON database).  The top of json-client.js has a list of relevant functions for working with a JSON database.  The two functions for reading from and writing to a JSON database are defined as follows:
  
   jsonClient.read(scope,location,lock)   jsonClient.read(scope,location,lock)
Line 52: Line 56:
   {   {
   }   }
 +
 +Also, when you are done using your JSONClient object, it is generally a good practice to explicitly have it disconnect from the server, by calling the 'disconnect' method:
 +  jsonClient.disconnect();
  
 ===== Best Practices ===== ===== Best Practices =====
Line 62: Line 69:
   var JSON_DB_LOCK_WRITE = 2;   var JSON_DB_LOCK_WRITE = 2;
   var jsonClient = new JSONClient("servername", 10088);   var jsonClient = new JSONClient("servername", 10088);
-  jsonClient.lock("json_scope", "my_game.user_scores", JSON_DB_LOCK_WRITE); +  jsonClient.lock("scores", "player1.TestGame", JSON_DB_LOCK_WRITE); 
-  var scoresData = jsonClient.read("json_scope", "my_game.user_scores", JSON_DB_LOCK_READ);+  var scoresData = jsonClient.read("scores", "player1.TestGame", JSON_DB_LOCK_READ);
   // Change scoresData ...   // Change scoresData ...
-  jsonClient.write("json_scope", "my_game.user_scores", scoresData, JSON_DB_LOCK_WRITE); +  jsonClient.write("scores", "player1.TestGame", scoresData, JSON_DB_LOCK_WRITE); 
-  jsonClient.unlock("json_scope", "my_game.user_scores");+  jsonClient.unlock("scores", "player1.TestGame");