Socket.IO + Express实现的跨浏览器、子域的聊天室-阿里云开发者社区

开发者社区> 开发与运维> 正文

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

简介: 实例中用到了(实例在Windows XP下运行):Node.js、Socket.IO、Express.js、jade、stylus   先在hosts文件中添加两行规则,关于两个子域的:sub1.

 

实例中用到了(实例在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

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章