Komentarji, moderiranje in družbeni viri prek enega samega REST API-ja in SDK-jev za več kot 10 jezikov. Pridobivajte, objavljajte in moderirajte iz svojega zaledja ter nato pretakajte novo aktivnost vsakemu bralcu v realnem času prek WebSocketov.
FastComments je več kot le komentarji. Gradite razprave, moderiranje in družbene vire na istem naboru API-ja in SDK-jev.
Navojni komentarji in klepet v živo. Pridobivajte, objavljajte, glasujte, pripenjajte, odgovarjajte in iščite, z vgrajenim SSO in posodobitvami v realnem času.
Namenska površina za moderiranje z več kot 40 končnimi točkami. Odobravajte, označujte, blokirajte, prepovejte, zaklepajte in beležite, s podporo samodejnega filtriranja neželene pošte.
Gradite vire aktivnosti in družbene vire z objavami, mediji, reakcijami in sledenji ter nato pošiljajte nove objave vsakemu odjemalcu v živo.
cURL in tipizirani SDK-ji za Node, Python, PHP, Ruby, Go, Java, Rust, Swift in C++. Več kot 200 končnih točk pokriva komentarje, glasove, strani, SSO uporabnike, objave v viru, moderiranje in obvestila, vse za enim samim API ključem.
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();
Odprite eno povezavo in prejmite vsak nov komentar, urejanje, glas in posodobitev prisotnosti v trenutku, ko se zgodi. Noben dogodek ni izgubljen: ob ponovni povezavi se event log znova pridobi, da se predvaja vse, kar je bilo poslano, medtem ko je bil odjemalec brez povezave. Nativni WebSocket naročniki so na voljo za Node, React Native, Java, Swift in C++. Vsi drugi jeziki ostanejo v realnem času s poizvedovanjem 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 izdelavo in vzdrževanje lastnega vmesnika za komentarje. Naši namenski, vzdrževani SDK-ji za React Native, Android in iOS vključujejo nativne komponente vmesnika za navojne komentarje, klepet v živo in vire. Vključite pogled, podajte konfiguracijo in končali ste.
npm: fastcomments-react-native-sdk
Nativne komponente, brez webview. Vključite FastCommentsLiveCommenting, FastCommentsLiveChat ali FastCommentsFeed in podajte konfiguracijo.
Oglejte si demo v živocom.fastcomments:sdk
Nativne Android komponente vmesnika. Dodajte FastCommentsView v svojo postavitev za navojne komentarje, glasovanje, obvestila in vire. Android 8.0+.
Oglejte si na GitHubuSwift Package: FastCommentsUI
Nativna SwiftUI knjižnica za navojne komentarje, družbene vire in klepet v živo. iOS 16+ in macOS 14+.
Oglejte si na GitHubuEn API ključ, en osnovni URL. Vse, kar zmore nadzorna plošča, zmore tudi vaša koda.
Tipizirani odjemalci za Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ in več, tako da gradite v svojem skladu namesto v našem.
Novi komentarji dosežejo vsakega bralca v trenutku objave, brez osveževanja in brez poizvedovanja. Če se bralec znova poveže, se zamujeni dogodki predvajajo iz dnevnika.
Enotna prijava, moderiranje komentarjev in filtriranje neželene pošte so vgrajeni, tako da so težki deli urejeni, preden napišete eno samo vrstico.
Mi upravljamo shranjevanje in infrastrukturo za realni čas po globalnem omrežju. Vi kličete API in objavite.
En nabor API-ja in SDK-jev za komentarje, klepet in aktivnost v živo po spletnih, mobilnih in strežniških aplikacijah.
Pretakajte sporočila vsem v sobi v realnem času, s štetjem prisotnosti in aktivnostjo tipkanja.
Dodajte gnezdene razdelke komentarjev z možnostjo glasovanja v članke, izdelke in objave z nekaj klici API-ja.
Objavite v vir in pošljite nove elemente in reakcije povezanim odjemalcem, ko prispejo.
Zbirajte vprašanja, odgovore, glasove in rezultate anket ter jih nato razvrstite in prikažite v živo.
Začnite brezplačno preizkusno obdobje in pridobite svoj ID najemnika in API ključ iz nadzorne plošče.
Dodajte SDK za svoj jezik ali kličite REST API neposredno s cURL in svojo glavo x-api-key.
Naložite komentarje, objavite iz svojega zaledja in se naročite na spremembe za pretakanje posodobitev vsakemu bralcu.
FastComments deluje v več regijah na naši lastni infrastrukturi. Zapisi se replicirajo med regijami, vozlišča se samodejno preklopijo ob napaki, bralci pa so postreženi iz lokacije, ki jim je najbližja.
Zapisi so sprejeti v več kot eni regiji in replicirani med njimi, tako da ni ene same točke odpovedi.
Komentarji in mediji so postreženi iz našega lastnega globalnega CDN in DNS, dostavljeni iz lokacije, ki je najbližja vašim uporabnikom. Brez CDN tretjih oseb.
Redundantna vozlišča se samodejno preklopijo, tako da promet med izpadom teče naprej. Podprto z 99.99% razpoložljivostjo.
Delujte v regiji US ali EU. Regija EU na eu.fastcomments.com ohranja podatke znotraj regije za skladnost.
Na tisoče zadovoljnih strank nam zaupa zaradi naše izjemne storitve, zanesljivosti in inovativnih rešitev. Pridružite se naši rastoči skupnosti in izkusite razliko še danes!
Začnite
Ne. Gradnik je izbiren. Celotno izkušnjo komentiranja lahko zgradite na REST API-ju in SDK-jih ter vse izrišete sami.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ in Nim, poleg React Native SDK-ja za mobilne naprave. Vsak jezik lahko tudi neposredno kliče REST API.
Odjemalci odprejo WebSocket in prejemajo nove komentarje, urejanja, glasove in posodobitve prisotnosti kot dogodke, tako da ni osveževanja in ni poizvedovanja. Noben dogodek ni izgubljen: če se odjemalec prekine, ob ponovni povezavi znova pridobi event log, da predvaja vse, kar je bilo poslano, medtem ko je bil brez povezave.
Ne. FastComments gosti infrastrukturo za realni čas. Vaš odjemalec se naroči s SDK-jem, mi pa dostavljamo dogodke.
Poizvedujejo končno točko event log-a, ki vrne vsako spremembo od določenega časovnega žiga. SDK-ji za Node, React Native, Java, Swift in C++ namesto tega vključujejo nativnega WebSocket naročnika.
Posebej za komentarje FastComments predizračuna paginacijo ob vsakem zapisu za optimalne čase nalaganja, tako da se tudi zelo velike niti paginirajo hitro.
Da. Začnite brezplačno preizkusno obdobje s polnim dostopom do API-ja in SDK-jev, brez kreditne kartice. Po preizkusnem obdobju se plačljivi paketi prilagajajo vašemu prometu.
Celotna referenca REST API-ja in SDK-jev je na docs.fastcomments.com, kjer so dokumentirani vsaka končna točka, parameter in odgovor.
Da. FastComments zagotavlja regijo EU na eu.fastcomments.com, SDK-ji pa podpirajo usmerjanje vanjo.
Začnite brezplačno preizkusno obdobje, pridobite svoj API ključ in še danes dodajte žive razprave v svojo aplikacijo.