Кросс-домен CFWebsocket?

Кто-нибудь знает, можно ли использовать новую функцию веб-сокетов в CF10 между доменами и серверами? И кто-нибудь знает или имеет пример кода для этого? У меня есть простой чат помощи в реальном времени, работающий над моим приложением, но я хочу применить его к другим сайтам и иметь одну область чата центрального администратора, где агенты поддержки будут взаимодействовать с пользователями из разных доменов.


person Guest    schedule 11.06.2013    source источник


Ответы (1)


Насколько я знаю, они этого не делают. Однако вы можете использовать <cfhttp> для вызова файла на другом сайте, который опубликует сообщение. Вот я это проделал.

Создайте файл с именем socketPublisher.cfm и сохраните его в каталоге, который не требует входа в систему для доступа к файлу.

socketPublisher.cfm

<cfparam name="Request.Attributes.msgType" default="newJob">
<cfparam name="Request.Attributes.channel" default="notify">
<cfparam name="Request.Attributes.Type" default="">
<cfoutput>
<cfswitch expression="#Request.Attributes.Type#">
    <cfcase value="yourType">
        <cfscript>
            WSPublish('chat',{message: '', msgType: '#Request.Attributes.msgType#'});
        </cfscript>
    </cfcase>
    <cfdefaultcase>
        <cfscript>
            WSPublish('#Request.Attributes.channel#',{message: '', msgType: '#Request.Attributes.msgType#'});
        </cfscript>
    </cfdefaultcase>
</cfswitch>
</cfoutput>

Затем на странице действий на другом сайте вам нужно будет сделать свой http-запрос к этому файлу.

actionPage.cfm

<cfhttp method="Post" url="#socketURL#/_scripts/socketPublisher.cfm">
    <cfhttpparam type="URL" name="msgType" value="pendingFiles">
</cfhttp>

Это должно сработать.

Существует также известная проблема с CF10 WSPublish, заключающаяся в том, что он изменит область действия CGI, вызывающую ошибку при попытке выполнить перенаправление со страницы действий. Я использую это как обходной путь для этой проблемы, пока не найду лучшее решение.

person Sean B.    schedule 12.12.2013