Giter Club home page Giter Club logo

live-player-map's Introduction

Live Player Map

Online map example

This little program will provide a simple API to return all latitude/longitude locations of currently online players on a game realm (designed for use with WoW private servers). No IP/account references are sent from the API to the client, just coordinates. Additionally supplied is an index.html file to display these locations on a map, given the user supplies his or her own Mapbox API credentials.

To prevent abuse, it will check every minute to update its data, not on each GET request. There are no data stores, but instead caches the data in memory as it is assumed the program will be left running continuously. If used on a very large server with thousands of users needing to be queried frequently, a state service like MongoDB could easily be implemented, but it seems unnecessary. With the ability to query 150 IPs per minute, and with caching, it should keep up relatively well.

Requirements

  1. Golang 1.x (built on 1.9)
  2. An MySQL account table with online accounts (real or fake). TrinityCore/MaNGOS/OregonCore, etc. Literally could be used for anything with online account tables with IP addresses in them, not just WoW servers.

Configuration

  1. Rename config.go.dist to config.go
  2. Edit newly renamed config.go file to set its MySQL credentials to the game server you're querying online accounts for.
  3. (Optional) To use an example map, edit the index.html file and change the Mapbox credentials to your own. Change localhost:8080 to a new URL if you are running the Go program from a different location than localhost.

Usage

  1. Run go get in the Terminal/Command Prompt inside the program directory.
  2. Run go build && ./live-player-map in the Terminal (go build && ./live-player-map.exe for Windows)
  3. Run index.html in the browser with updated credentials to view data.

Notes

This program utilizes the free ip-api API to lookup IP address information. Due to its limitation of 150 requests per minute, we have an internal counter to not exceed that threshold, and once hit, waits 1 minute before resuming.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.