curl -X POST "http://localhost:5001/user/onlinestatus" \
-H "Content-Type: application/json" \
-d '["user1", "user2", "user3"]'
const userIds = ["user1", "user2", "user3"];
const response = await fetch('http://localhost:5001/user/onlinestatus', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userIds)
});
const data = await response.json();
console.log(data);
import requests
user_ids = ["user1", "user2", "user3"]
response = requests.post('http://localhost:5001/user/onlinestatus', json=user_ids)
data = response.json()
print(data)
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
userIds := []string{"user1", "user2", "user3"}
jsonData, _ := json.Marshal(userIds)
resp, err := http.Post(
"http://localhost:5001/user/onlinestatus",
"application/json",
bytes.NewBuffer(jsonData),
)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result []map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("%+v\n", result)
}
[
{
"uid": "user1",
"online": 1,
"device_flag": 1
},
{
"uid": "user2",
"online": 0,
"device_flag": 0
},
{
"uid": "user3",
"online": 1,
"device_flag": 2
}
]
User Management
Get User Online Status
Get online status information for multiple users
POST
/
user
/
onlinestatus
curl -X POST "http://localhost:5001/user/onlinestatus" \
-H "Content-Type: application/json" \
-d '["user1", "user2", "user3"]'
const userIds = ["user1", "user2", "user3"];
const response = await fetch('http://localhost:5001/user/onlinestatus', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userIds)
});
const data = await response.json();
console.log(data);
import requests
user_ids = ["user1", "user2", "user3"]
response = requests.post('http://localhost:5001/user/onlinestatus', json=user_ids)
data = response.json()
print(data)
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
userIds := []string{"user1", "user2", "user3"}
jsonData, _ := json.Marshal(userIds)
resp, err := http.Post(
"http://localhost:5001/user/onlinestatus",
"application/json",
bytes.NewBuffer(jsonData),
)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result []map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("%+v\n", result)
}
[
{
"uid": "user1",
"online": 1,
"device_flag": 1
},
{
"uid": "user2",
"online": 0,
"device_flag": 0
},
{
"uid": "user3",
"online": 1,
"device_flag": 2
}
]
Overview
Get online status information for multiple users, including whether they are online and device type.Request Body
The request body is an array of user ID strings:["user1", "user2", "user3"]
curl -X POST "http://localhost:5001/user/onlinestatus" \
-H "Content-Type: application/json" \
-d '["user1", "user2", "user3"]'
const userIds = ["user1", "user2", "user3"];
const response = await fetch('http://localhost:5001/user/onlinestatus', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userIds)
});
const data = await response.json();
console.log(data);
import requests
user_ids = ["user1", "user2", "user3"]
response = requests.post('http://localhost:5001/user/onlinestatus', json=user_ids)
data = response.json()
print(data)
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
userIds := []string{"user1", "user2", "user3"}
jsonData, _ := json.Marshal(userIds)
resp, err := http.Post(
"http://localhost:5001/user/onlinestatus",
"application/json",
bytes.NewBuffer(jsonData),
)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result []map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("%+v\n", result)
}
[
{
"uid": "user1",
"online": 1,
"device_flag": 1
},
{
"uid": "user2",
"online": 0,
"device_flag": 0
},
{
"uid": "user3",
"online": 1,
"device_flag": 2
}
]
Response Fields
The response is an array, each element contains the following fields:string
required
User ID
integer
required
Online status
0- Offline1- Online
integer
required
Device identifier
0- App (Android, iPhone, iPad devices)1- Web (Browser, Web applications)2- Desktop (Desktop applications)
Status Codes
| Status Code | Description |
|---|---|
| 200 | Successfully retrieved user online status |
| 400 | Request parameter error |
| 500 | Internal server error |
Use Cases
Contact List Status
Display online status indicators in contact lists:// Get online status for contact list
const contactIds = ["friend1", "friend2", "colleague1"];
const statuses = await getUserOnlineStatus(contactIds);
// Update UI with status indicators
statuses.forEach(status => {
updateContactStatus(status.uid, status.online, status.device_flag);
});
Group Member Status
Check online status of group members:// Get group member online status
const groupMembers = ["member1", "member2", "member3"];
const memberStatuses = await getUserOnlineStatus(groupMembers);
// Show online member count
const onlineCount = memberStatuses.filter(s => s.online === 1).length;
console.log(`${onlineCount} members online`);
Presence Indicators
Implement presence indicators in chat interfaces:// Real-time presence updates
function updatePresenceIndicators(userStatuses) {
userStatuses.forEach(status => {
const indicator = document.querySelector(`[data-user="${status.uid}"] .presence`);
if (indicator) {
indicator.className = status.online ? 'presence online' : 'presence offline';
indicator.title = getDeviceTypeName(status.device_flag);
}
});
}
function getDeviceTypeName(deviceFlag) {
const deviceTypes = {
0: 'Mobile App',
1: 'Web Browser',
2: 'Desktop App'
};
return deviceTypes[deviceFlag] || 'Unknown';
}
Best Practices
- Batch Requests: Query multiple users in a single request to reduce API calls
- Caching: Cache online status for a short period to avoid excessive requests
- Real-time Updates: Combine with WebSocket events for real-time status updates
- UI Optimization: Update UI efficiently when status changes
- Privacy: Respect user privacy settings for status visibility

