chat-stream-ai
Version:
AI SDK for handling streaming response from conversational AI
35 lines (34 loc) • 1.41 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var useChatStream = function (url) {
var _a = (0, react_1.useState)([]), data = _a[0], setData = _a[1];
var _b = (0, react_1.useState)(''), error = _b[0], setError = _b[1];
var startStreaming = function () {
var eventSource = new EventSource(url);
eventSource.onmessage = function (event) {
var newEvent = JSON.parse(event.data);
if (newEvent.message === 'Stream completed') {
eventSource.close();
}
else {
setData(function (prevData) { return __spreadArray(__spreadArray([], prevData, true), [newEvent.message], false); });
}
};
eventSource.onerror = function (err) {
setError('Failed to fetch data stream.');
eventSource.close();
};
};
return { data: data, error: error, startStreaming: startStreaming };
};
exports.default = useChatStream;