Σχόλια, εποπτεία και κοινωνικές ροές μέσα από ένα REST API και SDK για 10+ γλώσσες. Ανακτήστε, δημοσιεύστε και εποπτεύστε από το backend σας και στη συνέχεια μεταδώστε νέα δραστηριότητα σε κάθε αναγνώστη σε πραγματικό χρόνο μέσω WebSockets.
Το FastComments είναι κάτι περισσότερο από σχόλια. Δημιουργήστε συζητήσεις, εποπτεία και κοινωνικές ροές πάνω στο ίδιο API και στην ίδια σουίτα SDK.
Σχόλια με νήματα και ζωντανή συνομιλία. Ανακτήστε, δημοσιεύστε, ψηφίστε, καρφιτσώστε, απαντήστε και αναζητήστε, με ενσωματωμένο SSO και ενημερώσεις σε πραγματικό χρόνο.
Μια ειδική επιφάνεια εποπτείας με 40+ endpoints. Εγκρίνετε, επισημάνετε, αποκλείστε, μπλοκάρετε, κλειδώστε και ελέγξτε, με υποστήριξη αυτόματου φιλτραρίσματος spam.
Δημιουργήστε ροές δραστηριότητας και κοινωνικές ροές με αναρτήσεις, πολυμέσα, αντιδράσεις και ακολουθίες και στη συνέχεια προωθήστε νέες αναρτήσεις ζωντανά σε κάθε client.
cURL και τυποποιημένα SDK για Node, Python, PHP, Ruby, Go, Java, Rust, Swift και C++. Πάνω από 200 endpoints καλύπτουν σχόλια, ψήφους, σελίδες, χρήστες SSO, αναρτήσεις ροής, εποπτεία και ειδοποιήσεις, όλα πίσω από ένα μόνο κλειδί API.
npm install fastcomments-sdkimport { createFastCommentsSDK } from 'fastcomments-sdk/server';
const sdk = createFastCommentsSDK({
apiKey: 'your-api-key', // server-side only
basePath: 'https://fastcomments.com' // optional (default)
});
// Fetch comments for a page
const { comments } = await sdk.publicApi.getCommentsPublic({
tenantId: 'your-tenant-id',
urlId: 'page-url-id'
});
// Post a comment
await sdk.publicApi.createCommentPublic({
tenantId: 'your-tenant-id',
broadcastId: crypto.randomUUID(),
createComment: {
urlId: 'page-url-id',
url: 'https://example.com/post',
comment: 'Hello from the API!',
commenterName: 'Alice'
}
});
# Fetch comments for a page curl -s 'https://fastcomments.com/api/v1/comments?tenantId=your-tenant-id&urlId=page-url-id' \ -H 'x-api-key: YOUR_API_KEY'
pip install fastcommentsimport client
from client.api.public_api import GetCommentsPublicOptions
configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) as api_client:
api = client.PublicApi(api_client)
response = api.get_comments_public(
"your-tenant-id",
"page-url-id",
GetCommentsPublicOptions(page=0, limit=30),
)
for comment in response.comments:
print(comment.commenter_name, comment.comment)
composer require fastcomments/fastcomments-php<?php
require_once(__DIR__ . '/vendor/autoload.php');
$api = new FastComments\Client\Api\PublicApi(new GuzzleHttp\Client());
$result = $api->getCommentsPublic('your-tenant-id', 'page-url-id', [
'page' => 0,
'limit' => 30,
]);
foreach ($result->getComments() as $comment) {
echo $comment->getCommenterName() . ': ' . $comment->getComment() . PHP_EOL;
}
gem install fastcommentsrequire 'fastcomments-client'
api = FastCommentsClient::PublicApi.new
result = api.get_comments_public('your-tenant-id', 'page-url-id', { page: 0, limit: 30 })
result.comments.each do |comment|
puts "#{comment.commenter_name}: #{comment.comment}"
end
go get github.com/fastcomments/fastcomments-gopackage main
import (
"context"
"fmt"
openapiclient "github.com/fastcomments/fastcomments-go/client"
)
func main() {
client := openapiclient.NewAPIClient(openapiclient.NewConfiguration())
resp, _, err := client.PublicAPI.
GetCommentsPublic(context.Background(), "your-tenant-id").
UrlId("page-url-id").Page(0).Limit(30).Execute()
if err != nil {
panic(err)
}
for _, c := range resp.Comments {
fmt.Printf("%s: %s\n", c.GetCommenterName(), c.GetComment())
}
}
import com.fastcomments.invoker.ApiClient;
import com.fastcomments.invoker.Configuration;
import com.fastcomments.api.PublicApi;
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://fastcomments.com");
PublicApi api = new PublicApi(client);
var result = api.getCommentsPublic("your-tenant-id", "page-url-id")
.page(0)
.limit(30)
.execute();
System.out.println(result.getComments());
use fastcomments_sdk::client::apis::configuration::Configuration;
use fastcomments_sdk::client::apis::public_api::{get_comments_public, GetCommentsPublicParams};
let config = Configuration::new();
let params = GetCommentsPublicParams {
tenant_id: "your-tenant-id".to_string(),
url_id: "page-url-id".to_string(),
page: Some(0),
limit: Some(30),
..Default::default()
};
let result = get_comments_public(&config, params).await.unwrap();
for comment in result.comments {
println!("{:?}: {:?}", comment.commenter_name, comment.comment);
}
import FastCommentsSwift
var options = PublicAPI.GetCommentsPublicOptions()
options.page = 0
options.limit = 30
let result = try await PublicAPI.getCommentsPublic(
tenantId: "your-tenant-id",
urlId: "page-url-id",
options: options
)
print(result.comments ?? [])
#include "FastCommentsClient/api/PublicApi.h"
#include "FastCommentsClient/ApiClient.h"
#include "FastCommentsClient/ApiConfiguration.h"
using namespace org::openapitools::client::api;
auto config = std::make_shared<ApiConfiguration>();
config->setBaseUrl(utility::conversions::to_string_t("https://fastcomments.com"));
PublicApi publicApi(std::make_shared<ApiClient>(config));
auto resp = publicApi.getCommentsPublic(
utility::conversions::to_string_t("your-tenant-id"),
utility::conversions::to_string_t("page-url-id")
).get();
Ανοίξτε μία σύνδεση και λάβετε κάθε νέο σχόλιο, επεξεργασία, ψήφο και ενημέρωση παρουσίας τη στιγμή που συμβαίνει. Δεν χάνεται κανένα συμβάν: κατά την επανασύνδεση, το event log ανακτάται ξανά για να αναπαραχθεί ό,τι στάλθηκε όσο ο client ήταν εκτός σύνδεσης. Native συνδρομητές WebSocket διατίθενται για Node, React Native, Java, Swift και C++. Κάθε άλλη γλώσσα παραμένει σε πραγματικό χρόνο κάνοντας polling στο event log.
npm install fastcomments-sdkimport { subscribeToChanges, LiveEventType } from 'fastcomments-sdk/browser';
const config = { tenantId: 'your-tenant-id', urlId: 'page-url-id' };
const subscription = subscribeToChanges(
config,
'your-tenant-id', // tenantIdWS
'page-url-id', // urlIdWS
'user-session-id', // userIdWS (from the getComments response)
(event) => {
if (event.type === LiveEventType.new_comment) {
console.log('New comment:', event.comment?.comment);
}
return true; // event handled
},
(isConnected) => console.log(isConnected ? 'connected' : 'disconnected')
);
// later: subscription.close();
npm install fastcomments-react-native-sdkimport React, { useState } from 'react';
import { FastCommentsLiveCommenting } from 'fastcomments-react-native-sdk';
import { FastCommentsCommentWidgetConfig } from 'fastcomments-typescript';
export default function Comments() {
// <FastCommentsLiveCommenting> subscribes to the live feed automatically.
const [config] = useState<FastCommentsCommentWidgetConfig>({
tenantId: 'your-tenant-id',
urlId: 'page-url-id',
showLiveRightAway: true,
countAll: true,
});
return <FastCommentsLiveCommenting config={config} />;
}
import com.fastcomments.pubsub.LiveEventSubscriber;
import com.fastcomments.pubsub.SubscribeToChangesResult;
import com.fastcomments.core.CommentWidgetConfig;
import com.fastcomments.model.LiveEventType;
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenant = "your-tenant-id";
config.urlId = "page-url-id";
LiveEventSubscriber subscriber = new LiveEventSubscriber();
SubscribeToChangesResult result = subscriber.subscribeToChanges(
config,
"your-tenant-id", // tenantIdWS
"page-url-id", // urlId
"page-url-id", // urlIdWS
"my-presence-id", // userIdWS
null, // canSeeCommentsCallback (optional)
(event) -> {
if (event.getType() == LiveEventType.NEW_COMMENT) {
System.out.println("New comment: " + event.getComment().getId());
}
}
);
// later: result.close();
import FastCommentsSwift
let config = LiveEventConfig(
tenantId: "your-tenant-id",
urlId: "page-url-id",
urlIdWS: "page-url-id", // URL-safe id for the WS server
userIdWS: "my-presence-id"
)
let subscriber = LiveEventSubscriber()
let result = subscriber.subscribeToChanges(config: config) { event in
if event.type == .newComment, let comment = event.comment {
print("New comment: \(comment.id ?? "")")
}
}
// later: result?.close()
#include <fastcomments/live/live_stream.hpp>
#include <iostream>
using namespace fastcomments::live;
LiveStreamConfig cfg;
cfg.wsBaseUrl = "wss://fastcomments.com"; // no trailing slash
LiveStream stream(cfg);
stream.onEvent([](const LiveEvent& ev) {
if (ev.type == EventType::NewComment) {
std::cout << "New comment at " << ev.timestamp << std::endl;
}
});
stream.subscribe("your-tenant-id", "page-url-id", "my-presence-id").wait();
// later: stream.close().wait();
pip install fastcommentsimport time
import client
configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) as api_client:
api = client.PublicApi(api_client)
start_time = int(time.time() * 1000) # ms epoch
while True:
result = api.get_event_log(
"your-tenant-id", "page-url-id", "my-user-id", start_time
)
for event in result.events:
print("event:", event.data)
start_time = int(event.created_at.timestamp() * 1000) + 1
time.sleep(2)
# startTime = epoch millis to replay from; advance it past the last event you saw curl -s 'https://fastcomments.com/api/v1/event-log/your-tenant-id?urlId=page-url-id&userIdWS=my-user-id&startTime=1720560000000' \ -H 'x-api-key: YOUR_API_KEY'
Αποφύγετε τη δημιουργία και συντήρηση του δικού σας UI σχολίων. Τα ειδικά, συντηρούμενα SDK μας για React Native, Android και iOS διαθέτουν native στοιχεία UI για σχόλια με νήματα, ζωντανή συνομιλία και ροές. Προσθέστε ένα view, περάστε μια διαμόρφωση και τελειώσατε.
npm: fastcomments-react-native-sdk
Native στοιχεία, χωρίς webview. Προσθέστε το FastCommentsLiveCommenting, το FastCommentsLiveChat ή το FastCommentsFeed και περάστε μια διαμόρφωση.
Δείτε το ζωντανό democom.fastcomments:sdk
Native στοιχεία UI για Android. Προσθέστε το FastCommentsView στη διάταξή σας για σχόλια με νήματα, ψηφοφορία, ειδοποιήσεις και ροές. Android 8.0+.
Προβολή στο GitHubSwift Package: FastCommentsUI
Μια native βιβλιοθήκη SwiftUI για σχόλια με νήματα, κοινωνικές ροές και ζωντανή συνομιλία. iOS 16+ και macOS 14+.
Προβολή στο GitHubΈνα κλειδί API, ένα base URL. Ό,τι κάνει ο πίνακας ελέγχου, μπορεί να το κάνει και ο κώδικάς σας.
Τυποποιημένοι clients για Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ και άλλα, ώστε να αναπτύσσετε στο δικό σας stack αντί στο δικό μας.
Τα νέα σχόλια φτάνουν σε κάθε αναγνώστη τη στιγμή που δημοσιεύονται, χωρίς ανανέωση και χωρίς polling. Αν ένας αναγνώστης επανασυνδεθεί, τα χαμένα συμβάντα αναπαράγονται από το log.
Το single sign-on, η εποπτεία σχολίων και το φιλτράρισμα spam είναι ενσωματωμένα, ώστε τα δύσκολα μέρη να έχουν λυθεί πριν γράψετε μία γραμμή.
Εμείς διαχειριζόμαστε την αποθήκευση και την υποδομή πραγματικού χρόνου σε ένα παγκόσμιο δίκτυο. Εσείς καλείτε το API και προχωράτε.
Ένα API και μία σουίτα SDK πίσω από νήματα σχολίων, συνομιλία και ζωντανή δραστηριότητα σε εφαρμογές web, κινητών και server.
Μεταδώστε μηνύματα σε όλους στο δωμάτιο σε πραγματικό χρόνο, με μετρήσεις παρουσίας και δραστηριότητα πληκτρολόγησης.
Προσθέστε ενότητες σχολίων με ένθεση και δυνατότητα ψήφου σε άρθρα, προϊόντα και αναρτήσεις με λίγες κλήσεις API.
Δημοσιεύστε σε μια ροή και προωθήστε νέα στοιχεία και αντιδράσεις στους συνδεδεμένους clients μόλις φτάνουν.
Συγκεντρώστε ερωτήσεις, απαντήσεις, ψήφους και αποτελέσματα δημοσκοπήσεων και στη συνέχεια κατατάξτε και εμφανίστε τα ζωντανά.
Ξεκινήστε μια δωρεάν δοκιμή και πάρτε το tenant ID και το κλειδί API σας από τον πίνακα ελέγχου.
Προσθέστε το SDK για τη γλώσσα σας ή καλέστε το REST API απευθείας με cURL και την κεφαλίδα x-api-key σας.
Φορτώστε σχόλια, δημοσιεύστε από το backend σας και εγγραφείτε στις αλλαγές για να μεταδίδετε ενημερώσεις σε κάθε αναγνώστη.
Το FastComments λειτουργεί σε πολλές περιοχές πάνω στη δική μας υποδομή. Οι εγγραφές αναπαράγονται μεταξύ περιοχών, οι κόμβοι αναλαμβάνουν αυτόματα σε περίπτωση βλάβης και οι αναγνώστες εξυπηρετούνται από την πλησιέστερη σε αυτούς τοποθεσία.
Οι εγγραφές γίνονται δεκτές σε περισσότερες από μία περιοχές και αναπαράγονται μεταξύ τους, ώστε να μην υπάρχει κανένα μεμονωμένο σημείο αστοχίας.
Τα σχόλια και τα πολυμέσα εξυπηρετούνται από το δικό μας παγκόσμιο CDN και DNS, με παράδοση από την πλησιέστερη στους χρήστες σας τοποθεσία. Χωρίς CDN τρίτων.
Οι πλεονάζοντες κόμβοι αναλαμβάνουν μόνοι τους, ώστε η κίνηση να συνεχίζει να ρέει κατά τη διάρκεια μιας διακοπής. Με υποστήριξη 99.99% uptime.
Λειτουργήστε στις ΗΠΑ (US) ή στην ΕΕ (EU). Η περιοχή EU στο eu.fastcomments.com διατηρεί τα δεδομένα εντός περιοχής για λόγους συμμόρφωσης.
Χιλιάδες ικανοποιημένοι πελάτες μας εμπιστεύονται για την εξαιρετική μας εξυπηρέτηση, την αξιοπιστία και τις καινοτόμες λύσεις μας. Γίνετε μέλος της αναπτυσσόμενης κοινότητάς μας και βιώστε τη διαφορά σήμερα!
Ξεκινήστε
Όχι. Το widget είναι προαιρετικό. Μπορείτε να χτίσετε ολόκληρη την εμπειρία σχολίων σας πάνω στο REST API και τα SDK και να αποδώσετε τα πάντα μόνοι σας.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ και Nim, μαζί με ένα SDK React Native για κινητά. Οποιαδήποτε γλώσσα μπορεί επίσης να καλέσει το REST API απευθείας.
Οι clients ανοίγουν ένα WebSocket και λαμβάνουν νέα σχόλια, επεξεργασίες, ψήφους και ενημερώσεις παρουσίας ως συμβάντα, ώστε να μην υπάρχει ανανέωση ούτε polling. Δεν χάνεται κανένα συμβάν: αν ένας client αποσυνδεθεί, ανακτά ξανά το event log κατά την επανασύνδεση για να αναπαραγάγει ό,τι στάλθηκε όσο ήταν εκτός σύνδεσης.
Όχι. Το FastComments φιλοξενεί την υποδομή πραγματικού χρόνου. Ο client σας εγγράφεται με το SDK και εμείς παραδίδουμε τα συμβάντα.
Κάνουν polling στο endpoint του event log, το οποίο επιστρέφει κάθε αλλαγή από μια χρονική σήμανση και μετά. Τα SDK για Node, React Native, Java, Swift και C++ περιλαμβάνουν αντ' αυτού έναν native συνδρομητή WebSocket.
Ειδικά για τα σχόλια, το FastComments προϋπολογίζει τη σελιδοποίηση σε κάθε εγγραφή για βέλτιστους χρόνους φόρτωσης, ώστε ακόμη και πολύ μεγάλα νήματα να σελιδοποιούνται γρήγορα.
Ναι. Ξεκινήστε μια δωρεάν δοκιμή με πλήρη πρόσβαση στο API και τα SDK, χωρίς πιστωτική κάρτα. Μετά τη δοκιμή, τα επί πληρωμή πλάνα κλιμακώνονται με την κίνησή σας.
Η πλήρης αναφορά REST API και SDK βρίσκεται στο docs.fastcomments.com, όπου τεκμηριώνεται κάθε endpoint, παράμετρος και απόκριση.
Ναι. Το FastComments εξυπηρετεί μια περιοχή EU στο eu.fastcomments.com και τα SDK υποστηρίζουν δρομολόγηση σε αυτήν.
Ξεκινήστε μια δωρεάν δοκιμή, πάρτε το κλειδί API σας και προσθέστε ζωντανές συζητήσεις στην εφαρμογή σας σήμερα.