Komentari, moderacija i društveni fidovi kroz jedan REST API i SDK-ove za 10+ jezika. Preuzimajte, objavljujte i moderirajte sa svog bekenda, a zatim strimujte novu aktivnost svakom čitaocu u realnom vremenu preko WebSockets-a.
FastComments je više od komentara. Gradite diskusije, moderaciju i društvene fidove na istom skupu API-ja i SDK-ova.
Ulančani komentari i ćaskanje uživo. Preuzimajte, objavljujte, glasajte, zakačite, odgovarajte i pretražujte, uz ugrađeni SSO i ažuriranja u realnom vremenu.
Namenska površina za moderaciju sa 40+ krajnjih tačaka. Odobravajte, označavajte, blokirajte, banujte, zaključavajte i revidirajte, uz automatsko filtriranje spama.
Gradite fidove aktivnosti i društvene fidove sa objavama, medijima, reakcijama i praćenjima, a zatim gurajte nove objave svakom klijentu uživo.
cURL i tipizirani SDK-ovi za Node, Python, PHP, Ruby, Go, Java, Rust, Swift i C++. Preko 200 krajnjih tačaka pokriva komentare, glasove, stranice, SSO korisnike, objave u fidu, moderaciju i obaveštenja, sve iza jednog API ključa.
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();
Otvorite jednu vezu i primajte svaki novi komentar, izmenu, glas i ažuriranje prisustva u trenutku kada se dogodi. Nijedan događaj se ne propušta: pri ponovnom povezivanju, event log se ponovo preuzima da bi se reprodukovalo sve što je poslato dok je klijent bio van mreže. Nativni WebSocket pretplatnici dolaze za Node, React Native, Java, Swift i C++. Svaki drugi jezik ostaje u realnom vremenu anketiranjem event log-a.
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'
Preskočite izgradnju i održavanje sopstvenog korisničkog interfejsa za komentare. Naši namenski, održavani SDK-ovi za React Native, Android i iOS dolaze sa nativnim UI komponentama za ulančane komentare, ćaskanje uživo i fidove. Ubacite prikaz, prosledite konfiguraciju i gotovi ste.
npm: fastcomments-react-native-sdk
Nativne komponente, bez webview-a. Ubacite FastCommentsLiveCommenting, FastCommentsLiveChat ili FastCommentsFeed i prosledite konfiguraciju.
Pogledajte demo uživocom.fastcomments:sdk
Nativne Android UI komponente. Dodajte FastCommentsView u svoj raspored za ulančane komentare, glasanje, obaveštenja i fidove. Android 8.0+.
Pogledajte na GitHub-uSwift Package: FastCommentsUI
Nativna SwiftUI biblioteka za ulančane komentare, društvene fidove i ćaskanje uživo. iOS 16+ i macOS 14+.
Pogledajte na GitHub-uJedan API ključ, jedan osnovni URL. Sve što radi kontrolna tabla, može i vaš kod.
Tipizirani klijenti za Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ i druge, tako da gradite u svom steku, a ne u našem.
Novi komentari stižu do svakog čitaoca u trenutku objavljivanja, bez osvežavanja i bez anketiranja. Ako se čitalac ponovo poveže, propušteni događaji se reprodukuju iz loga.
Jedinstvena prijava, moderacija komentara i filtriranje spama su ugrađeni, tako da su teški delovi rešeni pre nego što napišete ijednu liniju.
Mi upravljamo skladištem i infrastrukturom za realno vreme na globalnoj mreži. Vi pozivate API i isporučujete.
Jedan skup API-ja i SDK-ova iza niti komentara, ćaskanja i aktivnosti uživo na veb, mobilnim i serverskim aplikacijama.
Strimujte poruke svima u sobi u realnom vremenu, uz broj prisutnih i aktivnost kucanja.
Dodajte ugneždene odeljke za komentare sa glasanjem člancima, proizvodima i objavama uz nekoliko API poziva.
Objavljujte u fid i gurajte nove stavke i reakcije povezanim klijentima čim stignu.
Prikupljajte pitanja, odgovore, glasove i rezultate anketa, a zatim ih rangirajte i prikazujte uživo.
Započnite besplatnu probu i preuzmite svoj tenant ID i API ključ sa kontrolne table.
Dodajte SDK za svoj jezik ili pozovite REST API direktno pomoću cURL-a i svog x-api-key zaglavlja.
Učitajte komentare, objavljujte sa svog bekenda i pretplatite se na promene da biste strimovali ažuriranja svakom čitaocu.
FastComments radi u više regiona na našoj sopstvenoj infrastrukturi. Upisi se repliciraju između regiona, čvorovi se automatski prebacuju na rezervne, a čitaoci se uslužuju sa lokacije koja im je najbliža.
Upisi se prihvataju u više od jednog regiona i repliciraju između njih, tako da ne postoji jedinstvena tačka otkaza.
Komentari i mediji se uslužuju sa našeg sopstvenog globalnog CDN-a i DNS-a, isporučeni sa lokacije najbliže vašim korisnicima. Bez CDN-a treće strane.
Redundantni čvorovi se sami prebacuju na rezervu, tako da saobraćaj nastavlja da teče tokom ispada. Podržano sa 99.99% vremena rada.
Radite u US ili EU regionu. EU region na eu.fastcomments.com čuva podatke u regionu radi usklađenosti.
Hiljade zadovoljnih kupaca nam veruju za našu izuzetnu uslugu, pouzdanost i inovativna rešenja. Pridružite se našoj rastućoj zajednici i doživite razliku danas!
Počnite
Ne. Vidžet je opcioni. Možete izgraditi ceo doživljaj komentarisanja na REST API-ju i SDK-ovima i sve prikazati sami.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ i Nim, uz React Native SDK za mobilne uređaje. Bilo koji jezik takođe može direktno da pozove REST API.
Klijenti otvaraju WebSocket i primaju nove komentare, izmene, glasove i ažuriranja prisustva kao događaje, tako da nema osvežavanja ni anketiranja. Nijedan događaj se ne propušta: ako se klijent prekine, ponovo preuzima event log pri ponovnom povezivanju da bi reprodukovao sve što je poslato dok je bio van mreže.
Ne. FastComments hostuje infrastrukturu za realno vreme. Vaš klijent se pretplaćuje pomoću SDK-a, a mi isporučujemo događaje.
Oni anketiraju krajnju tačku event log-a, koja vraća svaku promenu od određenog vremenskog žiga. Node, React Native, Java, Swift i C++ SDK-ovi umesto toga uključuju nativni WebSocket pretplatnik.
Konkretno za komentare, FastComments unapred izračunava paginaciju pri svakom upisu radi optimalnog vremena učitavanja, tako da se čak i veoma velike niti brzo paginiraju.
Da. Započnite besplatnu probu sa punim pristupom API-ju i SDK-ovima, bez potrebe za kreditnom karticom. Posle probe, plaćeni planovi se skaliraju prema vašem saobraćaju.
Kompletna referenca za REST API i SDK nalazi se na docs.fastcomments.com, gde su dokumentovane sve krajnje tačke, parametri i odgovori.
Da. FastComments nudi EU region na eu.fastcomments.com, a SDK-ovi podržavaju usmeravanje ka njemu.
Započnite besplatnu probu, preuzmite svoj API ključ i dodajte diskusije uživo u svoju aplikaciju već danas.