Коментари, модерација и друштвени фидови кроз један REST API и SDK-ове за 10+ језика. Преузимајте, објављујте и модерирајте са свог бекенда, а затим стримујте нову активност сваком читаоцу у реалном времену преко WebSockets-а.
FastComments је више од коментара. Градите дискусије, модерацију и друштвене фидове на истом скупу API-ја и SDK-ова.
Уланчани коментари и ћаскање уживо. Преузимајте, објављујте, гласајте, закачите, одговарајте и претражујте, уз уграђени SSO и ажурирања у реалном времену.
Наменска површина за модерацију са 40+ крајњих тачака. Одобравајте, означавајте, блокирајте, банујте, закључавајте и ревидирајте, уз аутоматско филтрирање спама.
Градите фидове активности и друштвене фидове са објавама, медијима, реакцијама и праћењима, а затим гурајте нове објаве сваком клијенту уживо.
cURL и типизирани SDK-ови за Node, Python, PHP, Ruby, Go, Java, Rust, Swift и C++. Преко 200 крајњих тачака покрива коментаре, гласове, странице, 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 се поново преузима да би се репродуковало све што је послато док је клијент био ван мреже. Нативни WebSocket претплатници долазе за Node, React Native, Java, Swift и C++. Сваки други језик остаје у реалном времену анкетирањем 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'
Прескочите изградњу и одржавање сопственог корисничког интерфејса за коментаре. Наши наменски, одржавани SDK-ови за React Native, Android и iOS долазе са нативним UI компонентама за уланчане коментаре, ћаскање уживо и фидове. Убаците приказ, проследите конфигурацију и готови сте.
npm: fastcomments-react-native-sdk
Нативне компоненте, без webview-а. Убаците FastCommentsLiveCommenting, FastCommentsLiveChat или FastCommentsFeed и проследите конфигурацију.
Погледајте демо уживоcom.fastcomments:sdk
Нативне Android UI компоненте. Додајте FastCommentsView у свој распоред за уланчане коментаре, гласање, обавештења и фидове. Android 8.0+.
Погледајте на GitHub-уSwift Package: FastCommentsUI
Нативна SwiftUI библиотека за уланчане коментаре, друштвене фидове и ћаскање уживо. iOS 16+ и macOS 14+.
Погледајте на GitHub-уЈедан API кључ, један основни URL. Све што ради контролна табла, може и ваш код.
Типизирани клијенти за Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ и друге, тако да градите у свом стеку, а не у нашем.
Нови коментари стижу до сваког читаоца у тренутку објављивања, без освежавања и без анкетирања. Ако се читалац поново повеже, пропуштени догађаји се репродукују из лога.
Јединствена пријава, модерација коментара и филтрирање спама су уграђени, тако да су тешки делови решени пре него што напишете иједну линију.
Ми управљамо складиштем и инфраструктуром за реално време на глобалној мрежи. Ви позивате API и испоручујете.
Један скуп API-ја и SDK-ова иза нити коментара, ћаскања и активности уживо на веб, мобилним и серверским апликацијама.
Стримујте поруке свима у соби у реалном времену, уз број присутних и активност куцања.
Додајте угнеждене одељке за коментаре са гласањем чланцима, производима и објавама уз неколико API позива.
Објављујте у фид и гурајте нове ставке и реакције повезаним клијентима чим стигну.
Прикупљајте питања, одговоре, гласове и резултате анкета, а затим их рангирајте и приказујте уживо.
Започните бесплатну пробу и преузмите свој tenant ID и API кључ са контролне табле.
Додајте SDK за свој језик или позовите REST API директно помоћу cURL-а и свог x-api-key заглавља.
Учитајте коментаре, објављујте са свог бекенда и претплатите се на промене да бисте стримовали ажурирања сваком читаоцу.
FastComments ради у више региона на нашој сопственој инфраструктури. Уписи се реплицирају између региона, чворови се аутоматски пребацују на резервне, а читаоци се услужују са локације која им је најближа.
Уписи се прихватају у више од једног региона и реплицирају између њих, тако да не постоји јединствена тачка отказа.
Коментари и медији се услужују са нашег сопственог глобалног CDN-а и DNS-а, испоручени са локације најближе вашим корисницима. Без CDN-а треће стране.
Редундантни чворови се сами пребацују на резерву, тако да саобраћај наставља да тече током испада. Подржано са 99.99% времена рада.
Радите у US или EU региону. EU регион на eu.fastcomments.com чува податке у региону ради усклађености.
Хиљаде задовољних купаца нам верују због наше изузетне услуге, поузданости и иновативних решења. Придружите се нашој растућој заједници и искусите разлику већ данас!
Почните
Не. Виџет је опциони. Можете изградити цео доживљај коментарисања на REST API-ју и SDK-овима и све приказати сами.
Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ и Nim, уз React Native SDK за мобилне уређаје. Било који језик такође може директно да позове REST API.
Клијенти отварају WebSocket и примају нове коментаре, измене, гласове и ажурирања присуства као догађаје, тако да нема освежавања ни анкетирања. Ниједан догађај се не пропушта: ако се клијент прекине, поново преузима event log при поновном повезивању да би репродуковао све што је послато док је био ван мреже.
Не. FastComments хостује инфраструктуру за реално време. Ваш клијент се претплаћује помоћу SDK-а, а ми испоручујемо догађаје.
Они анкетирају крајњу тачку event log-а, која враћа сваку промену од одређеног временског жига. Node, React Native, Java, Swift и C++ SDK-ови уместо тога укључују нативни WebSocket претплатник.
Конкретно за коментаре, FastComments унапред израчунава пагинацију при сваком упису ради оптималног времена учитавања, тако да се чак и веома велике нити брзо пагинирају.
Да. Започните бесплатну пробу са пуним приступом API-ју и SDK-овима, без потребе за кредитном картицом. После пробе, плаћени планови се скалирају према вашем саобраћају.
Комплетна референца за REST API и SDK налази се на docs.fastcomments.com, где су документоване све крајње тачке, параметри и одговори.
Да. FastComments нуди EU регион на eu.fastcomments.com, а SDK-ови подржавају усмеравање ка њему.
Започните бесплатну пробу, преузмите свој API кључ и додајте дискусије уживо у своју апликацију већ данас.