django 集成个推_Django网站添加WebIM

这篇文章发表于2011年,已经过期。建议使用融云、个推等方案。

大多数站长的都遇到过这种情况:当你依靠自己网站的内容,辛辛苦苦的吸引了一群用户,他们渐渐的形成一个志同道合的小圈子,然后,他们注册了一个QQ群,从此以后你的网站不再有人光顾……为了避免这种悲剧不断重演,WebIM工具应运而生。用户访问这个网站时,能看到其他正在浏览这个网站的用户,彼此可以即时聊天。比如Ntalker,它可以添加好友,有群组功能,即时消息,但只有asp和php的SDK,于是我试着把它搬到了Django网站上,可以访问onlinegalgame.com查看效果。

Register

首先申请一个Ntalker的帐号,填写邮箱、用户名、网站程序等,如果你是用的是DZ之类的国内主流PHP论坛程序,它会提供现成的安装包。可惜我们用的是Django,没有现成的可用,所以网站程序要选择其他,然后下载SDK。话说这个SDK实在简陋得可以,只有几个txt文件。注册完成后进入管理页面,可以定制样式。

Install

在页面标签之后添加以下JS代码(放在body之前很诡异的会产生两个标签)

im_connectIM("onlinegalgame_com", "{{request.user.id}}", "{{request.user.username}}", "{{request.session.session_key}}", '');

onlinegalgame_com:网站的siteid,通常是你的域名生成的,注册以后下载SDK,可以在sitekey.txt文件中找到;

user.id和user.name:获得登录的用户名,如果没有用户名(未登录),则为空,空用户名在Ntalker中会显示用户名name;

session_key:不为空即可,但为了安全性最好保证唯一,这里直接用django生成的session_key。

引入之后,页面下方已经可以看到WebIM的工具栏了。在Ntalker网站能修改样式,icon,添加图标等。但点击窗口会提示登录失败,还需要配置API。

API

在自己的网站上定义一个API(比如我定义的是http://onlinegalgame.com/imxml),Ntalker会对这个地址发起请求,通常是以query参数的形式(比如登录会通过http://onlinegalgame.com/imxml?query=login来请求),然后解析返回的xml文件,做出相应的行为。还以下的做法不够规范——没办法,这东西就没给一个规范的SDK——我省略了配置文件,直接利用API来处理所有的请求。

首先编辑urls.py文件,添加API对应的URL

urlpatterns = patterns('',

#……

url(r'^imxml$', 'onlinegalgame.views.imxml', name='imxml'),

#……

这样当Ntalker服务器对API发起请求的时候,就会由根目录下views.py文件的imxml函数来处理。编辑views.py文件:

from django.http import HttpResponse

def imxml(request):

#几个config参数,这个例子中没什么用,可以省略

im_enable = True

im_float = True

im_siteid = 'onlinegalgame_com'

#处理query参数的行为

querytype = request.GET.get('query')

query = {

'siteprofile' : 'custom'+

'utf-8'+

'Onlinegalgame',

'login' : '3.0.0'+

'true',

'addbuddy' : 'true'+

'accepted'

}

res = '%s' % query[querytype]

if querytype == None:

return HttpResponse('Invalid query paramter')

else:

return HttpResponse(res,mimetype='application/xml')#返回xml

访问 http://onlinegalgame.com/imxml?query=siteprofile 可以看到返回的xml文件了。只要定义了对login就行了处理,就可以登录了,如果登录失败,登录Ntalker的后台,确定这里的状态是已开通,否则就像我一样,苦等他们的技术客服上线然后联系客服让他帮忙开通吧…

SDK中规定有6个必须的API,这里只写了3个,所以只能实现登录、添加好友之类的行为。

Afterword

其实腾讯收购康盛之后,我原以为他们的目标是在康盛的DZ、UCHOME之上,推出WebIM的,但目前除了添加了QQ用户登录的接口,QQ消息推送以外,没看到其他新动作。Ntalker的缺陷很多,但也是目前我能找到的唯一一个解决方案,希望能有更多类似的WebIM系统,这对于不愿归顺腾讯的用户来说终归是件好事。当然,各位如果知道同类型的WebIM(即使聊天,好友/群功能)希望能在评论中告知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django_celery_beat是一个django应用程序,它允许您使用celery定期运行周期性任务。这些周期性任务可以是一次性的或循环的,你可以设置它们在指定的时间间隔内自动运行,也可以设置它们在特定的时间运行。 要使用django_celery_beat,请按照以下步骤操作: 1. 安装django_celery_beat: ``` pip install django_celery_beat ``` 2. 在settings.py中添加以下代码: ``` INSTALLED_APPS = [ # ... 'django_celery_beat', ] CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' ``` 3. 在项目的urls.py文件中添加以下代码: ``` from django.urls import path from django_celery_beat.views import ( PeriodicTaskListView, PeriodicTaskCreateView, PeriodicTaskUpdateView, PeriodicTaskDeleteView, PeriodicTaskDetailView, ) urlpatterns = [ # ... path('celery/periodic-tasks/', PeriodicTaskListView.as_view(), name='periodic_task_list'), path('celery/periodic-task/add/', PeriodicTaskCreateView.as_view(), name='periodic_task_create'), path('celery/periodic-task/<int:pk>/', PeriodicTaskDetailView.as_view(), name='periodic_task_detail'), path('celery/periodic-task/<int:pk>/update/', PeriodicTaskUpdateView.as_view(), name='periodic_task_update'), path('celery/periodic-task/<int:pk>/delete/', PeriodicTaskDeleteView.as_view(), name='periodic_task_delete'), ] ``` 4. 在celery.py文件中添加以下代码: ``` from celery import Celery from django.conf import settings app = Celery('my_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) ``` 5. 在tasks.py文件中创建您的任务,例如: ``` from celery import shared_task @shared_task def my_task(): # Do something here ``` 6. 创建周期性任务,您可以使用Django admin或创建它们的视图。 现在,您已经可以在django中使用celery定期运行周期性任务了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值