Кто-нибудь знает о каких-либо примерах или страницах, которые я могу использовать, чтобы использовать Live один в одном чате с помощью веб-сокетов CF10? Все примеры, которые я нашел в сети, были те, что были в групповых чатах, где пользователи подписались на определенный канал. Мне это нужно, так что может быть много случаев одного чата, например, как работает чат Live Help, который вы часто видите на веб-сайтах, которые позволяют вам общаться с одним из агентов поддержки. Любая помощь приветствуется и, надеюсь, будут примеры (CF и JS).Coldfusion 10 - Live One on One chat with Websockets
ответ
Ben Nadel имеет хорошую статью об использовании каркасов CF10 для pushing a message to a target user. Он даже добавил хорошее демо-видео. Это может быть то, что вы ищете или, по крайней мере, поможете вам начать работу.
Спасибо Ян! Выглядит очень интересно и будет читать на нем.Просто надеюсь, что он будет работать в сценарии чата Live Help, где пользователь - это просто случайный человек, подключающийся к агенту. – Guest
Вот пример кода, который в настоящее время работает для меня.
Вместо использования атрибута subscribeTo
используйте функцию js, чтобы подписаться на пользователя и передать некоторые значения заголовков. Эти заголовки могут быть использованы в качестве фильтров на вызов публикации с использованием selector
Пример:
<cfwebsocket name="ChatSocket" onOpen="openHandler" onMessage="msgHandler" onError="errHandler">
<script>
function openHandler(){
//Subscribe to the channel, pass in headers for filtering later
ChatSocket.subscribe('chatChannel',{name: '#Session.Auth.FirstName#', UserID: '#Session.Auth.UserID#', AccountID: '#Session.Auth.AccountID#' });
}
function publish(txt, userID){
var msg = {
AccountID: "#Session.Auth.AccountID#",
publisher: '#Session.Auth.UserID#',
id: userID,
message: converthtml(txt)
};
//When including headers, the "selector" is where you will filter who it goes to.
var headers = {
AccountID: "#Session.Auth.AccountID#",
publisher: '#Session.Auth.UserID#',
id: userID,
selector: "UserID eq '"+userID+"' and AccountID eq '#Session.Auth.AccountID#'"
};
ChatSocket.publish('chatChannel',msg, headers);
}
function msgHandler(message){
console.log(message);
}
function errHandler(err){
console.log(err);
}
</script>
Сначала я думал о реализации что-то подобное, но есть некоторые зачаточные ограничения в CF10 как сейчас, что объезды меня от дальнейшего изучения.
- поддержка WSS отсутствует, см: Does CF10 support secure websocket wss?
- WebSocket не работает в среде кластера см: https://groups.google.com/forum/#!topic/houcfug/M7YQQyrBTaQ
я бы искать в другом месте для любого серьезного один-к-одному чата раствор, возможно Socket.IO on NodeJS или Java
WSS может поставляться в CF11. Я не уверен.
- 1. Firebase one one to one chat android
- 2. XMPP One To One Chat в IOS
- 3. jquery one on() вместо bind() и live()
- 4. Add-Content With Condition On One Line
- 5. Использование WebSockets с Codename One
- 6. quickblox javascript sdk one to one video chat
- 7. Используя .one() с .live() JQuery
- 8. Закрыть first eventsource on on one one onen method
- 9. One to One LSTM
- 10. EF 5/One to Zero-or-One with Unique Constraint
- 11. Union with one different column
- 12. One-Liner with Return Statement
- 13. Двунаправленный One-To-One
- 14. One-One присоединиться к R
- 15. Doctrine one to one JOIN
- 16. One thread one ByteBuffer NIO
- 17. Localhost on Nexus One/Android
- 18. MongoDB Sharding On One Machine
- 19. Получить полевую квоту Live SDK One Drive
- 20. JPQL Left join with filtering on one-to-many collection
- 21. Bind two html view with one js template on meteor.js
- 22. one shot delete with hibernate on onetomany association
- 23. RuntimeException on Camera.setParameters() on nexus one
- 24. AudioRecord с новыми телефонами Android One One One
- 25. delete from 3 tables with one query
- 26. Hibernate One-To-One отношения
- 27. Symfony ONE-TO-ONE отношение
- 28. One-To-One Mapping вопрос
- 29. Hibernate One-To-One DAO
- 30. Fluent NHibernate & one-to-one
У кого-нибудь есть идеи? Моя первоначальная мысль заключалась в том, чтобы создать один канал чата и для каждого чата, инициированного клиентом, я создаю его на подканале чата, например chat.chat1 или что-то еще. Затем сторона агента будет подключаться к этому каналу, чтобы он был как чат один на один, но я не знаю, правильно ли это сделать. Как другие люди это делают? – Guest
Да, да, но мне нужно найти некоторое время, чтобы сбить некоторые доказательства кода концепции. Дай мне около 24 часов, и я вернусь к тебе. –
Отлично! Благодаря! Это очень трудно найти хороший пример для этого. – Guest