Socket.IO + Express实现的跨浏览器、子域的聊天室

实例中用到了(实例在Windows XP下运行):Node.jsSocket.IOExpress.jsjadestylus

先在hosts文件中添加两行规则,关于两个子域的:sub1.localhost、sub2.localhost

使用socket.io

1: var exp = require('express');

       2: var app = exp.createServer();

       3:  

       4: global.socket = require('socket.io').listen(app);

       5: global.socket.set('log level', 1);

       6: global.socket.set('transports', [ 'websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);

加载配置,创建子域的应用

1: app.use(exp.vhost('sub1.' + global.host, require('./subdomains/sub1')));

       2: app.use(exp.vhost('sub2.' + global.host, require('./subdomains/sub2')));

       3:  

       4: require('./app/config')(app, exp);

       5: require('./app/server/router')(app);

       6: require('./app/server/modules/chat-socket');

chat-socket.js模块

1: module.exports = function() {

       2:         

       3:     global.socket.of('/chat').on('connection', function(socket) { 

       4:        //todo 

       5:     });

       6: }();

前台页面使用socket.io.js建立连接

1: socket = io.connect('/chat');

       2: socket.on('status', function (connections) {

       3:     

       4: });

       5: socket.on('user-ready', function (data) {

       6:     

       7: });

       8: socket.on('user-message', function (data) {

       9:     

      10: });

      11:  

      12: socket.on('user-disconnected', function (data) {

      13:     

      14: });

      15:  

      16: //向后台发送消息

      17: socket.emit('user-ready', {name : 'xxx'});

运行完整的示例node app.js即可,下载示例源码>>

本文参考:

1、http://www.quietless.com/kitchen/building-a-node-js-chat-application-and-sharing-socket-io-across-multiple-subdomains/

2、creating-a-basic-site-with-node-and-express

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏别先生

vmware安装centOs操作系统配置网络的一系列问题

1:最近公司在测试项目,需要在linux操作系统上面测试,可惜自己之前学linux操作系统不是很深,配置网络也不是很熟练,网上方法太多,但是不是很好用,确实难为...

21410
来自专栏轻扬小栈

Xware Desktop linux下的迅雷 — ubuntu 14.04 安装

9887
来自专栏轻扬小栈

破狗,pogoplus 之 百度同步 SyncY

1441
来自专栏技术专栏

Intellij IDEA 修改项目名称

4.8K2
来自专栏向治洪

Jar mismatch! Fix your dependencies

  在开发Android项目的时候,有时需要引用多个项目作为library。在引用项目的时候,有时会出现“Jar mismatch! Fix your depe...

1988
来自专栏Java成神之路

Git_学习_07_ 推送修改到远端

723
来自专栏肖洒的博客

爬虫入门(二):单线程爬虫

将下载的后缀为whl的文件改为zip, 解压文件,获得requests文件,拷贝到C盘的python/lib文件夹中。

842
来自专栏coder修行路

Python爬虫番外篇之关于登录

常见的登录方式有以下两种: 查看登录页面,csrf,cookie;授权;cookie 直接发送post请求,获取cookie 上面只是简单的描述,下面是详细的针...

33210
来自专栏向治洪

svn插件安装

以下是一些关键步骤: ? ? 其中http://subclipse.tigris.org/update_1.0.x是SVN插件的下载站点【subclipse是E...

2135
来自专栏皮振伟的专栏

[libvirt][nginx]libvirt文档访问速度提高的小技巧

前言: ? 熟悉上图的朋友,应该都是libvirt的开发者或者使用者。 http://libvirt.org/提供了libvirt的开发文档,但是有时候,它的...

2936

扫码关注云+社区

领取腾讯云代金券