使用nodejs+socket.io与页面通讯

最近捣鼓nodejs,记下笔记(我从百度空间搬过来了,顺便吐槽一下百度空间编辑器,神马玩意儿)

注意:以下文字基于nodejs v0.10.24,socket.io v0.9 ,其他版本以官方文档为准

首先安装nodejs
然后安装socket.io
使用命令
npm install socket.io
Windows下安装包为我们提供了npm环境,如下图


socket.io会被安装在当前目录,如果要在项目里面使用,必须先 cd 到项目目录,不同的项目需要安装多次

这样会很怪,解决方法是把 node_modules 这个文件夹地址加到环境变量 NODE_PATH 中(没有就新建)

现在可以写段脚步测试一下socket.io有没有安装成功
var io = require('socket.io');
用node运行一下,看看是否有错误
node服务端
var http = require('http');
var redis = require('redis');
//加载配置文件,路径应该使用"/"而不是"\"(无论windows或者linux)
var config = require('./config').Config.getConfig();
//加载工具类
var util = require('../common/util').Util;
var server = http.createServer(function (request, response) {});
var io = require('socket.io').listen(server);
 
server.listen(config.server_port);
//运行的来源地址
io.set('origins','*:*');
//传输方式
io.set('transports',['websocket'/*,'flashsocket','htmlfile','xhr-polling','jsonp-polling'*/]);
//用一个数组保存当前所有连接
var socket_array = new Array();
//namespace必须以"/"开头
io.of(config.namespace).on('connection',function(socket){
    //保存为全局变量
    socket_array.push(socket);
    console.log('client connected');
    socket.on('message',function(event){
        console.log('Received message from client!',event);
    });
    socket.on('disconnect',function(){
        //当连接断开,将他从数组中删除
        var search_index = util.array_search(socket,socket_array);
        if(search_index != -1){
            socket_array.splice(search_index,1);
        }
        console.log('client has disconnected',socket_array.length,'left');
    });
});
server.on("close",function(){
//服务停止事件
});

上面的代码引用config.js配置文件
function config(){
    this.getConfig = function(){
        return {
            server_port:8080,    //端口号
            namespace:'/sync'    //必须以“/”开头
        };
    }
}
 
exports.Config = new config();

简单的工具类util.js
function util(){
    this.in_array = function(search,arr){
        for(var i=0; i<arr.length; i++){
            if(search==arr[i]){
                return true;
            }
        }
        return false;
    };
 
    this.array_search = function(search,arr){
        for(var i=0; i<arr.length; i++){
            if(search==arr[i]){
                return i;
            }
        }
        return -1;
    }
}
 
exports.Util = new util();

客户端
引入脚本
<script type="text/javascript" src="http://【node服务端地址】:【node端口】/socket.io/socket.io.js"></script>

使用
var socket = io.connect('http://【node服务端地址】:【node服务端端口】/sync');
socket.on('connect', function(){
    console.log('connected to server');
    socket.emit('message', 'bulabulabula...');
});
socket.on('disconnect', function(){
    console.log('disconnected from server');
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值