美文网首页
IM架构(一)、本地WS服务器

IM架构(一)、本地WS服务器

作者: Stark_Dylan | 来源:发表于2015-11-04 09:12 被阅读491次

本地跑一个WebSocketServer. 跑不起来的自己去百度一下喽, npm, 不介绍喽, 百度查怎么安装。

npm install ws

创建app.js文件


"use strict";

var webSocketsServerPort = 8081; // 监听的端口
var webSocketServer = require('websocket').server; // 生成对象
var http = require('http');

var clients = [ ];

// 转换
function htmlEntities(str) {
    return String(str).replace(/&/g, '&').replace(/>/g, '>').replace(/"/g, '"');
}

// HTTP server
var server = http.createServer(function(request, response) {

});
server.listen(webSocketsServerPort, function() {
    console.log((new Date()) + " Server is listening on port " + webSocketsServerPort);
});

// WebSocket server
var wsServer = new webSocketServer({

    httpServer: server
});

wsServer.on('request', function(request) {
    console.log((new Date()) + ' Connection from origin ' + request.origin + '.');

    var connection = request.accept(null, request.origin);

    var index = clients.push(connection) - 1;
    var dataDict = false;

    console.log((new Date()) + ' Connection accepted.');

    // user sent some message
    connection.on('message', function(message) {

        if (message.type === 'utf8') { // accept only text

                dataDict = JSON.parse(htmlEntities(message.utf8Data));

                console.log((new Date()) + ' User is known as: ' + dataDict);

                var eventName = dataDict['event'];
                var eventID_GET = dataDict['eventID'];

                console.log('eventName: ' + eventName + '\n' + 'eventID: ' + eventID_GET);

                // 登录事件
                if (eventName == 'login') {

                    connection.sendUTF(JSON.stringify({
                        event:'loginsuccess',
                        eventID:eventID_GET,
                        eventTime:Date.parse(new Date()),
                        eventStatu:'1',
                        data:{
                          userID:'Dylan',
                          nickName:'WildDylan',
                          headimg:'http://img2.imgtn.bdimg.com/it/u=4093725959,796807213&fm=21&gp=0.jpg'
                        }
                    }));
                }

                // 消息事件
                if (eventName == 'message') {

                  connection.sendUTF(JSON.stringify({
                      event:'ackServerEvent',
                      eventID:eventID_GET,
                      eventTime:Date.parse(new Date()),
                      eventStatu:'1',
                      data:{

                      }
                  }));

                  // 测试回复一条消息
                  connection.sendUTF(JSON.stringify({

                    event:'message',
                    eventID:Date.parse(new Date()),
                    eventTime:Date.parse(new Date()),
                    eventStatu:'1',
                    data:{
                      userID:'Dylan_test_1',
                      messageID:Date.parse(new Date()),
                      messageComm:'qingke',
                      conversionID:'currentConversionID',
                      messageDate:Date.parse(new Date()),
                      messageContent:{
                        extra:'Message Extra',
                        pushMessage:'New Message Coming...',
                        content:Date.parse(new Date()) + '_msg',
                      },
                      messageType:'0',
                      sentStatu:'40',
                      messageDirection:'1'
                    }
                  }));

                  console.log('re message!');
                }
        }
    });

    connection.on('close', function(connection){

      console.log((new Date()) + " Peer "
                + connection.remoteAddress + " disconnected.");
    });

});


然后 node app.js, 本地的ws服务就会run起来

@WildDylan 2015.11.4

相关文章

  • IM架构(一)、本地WS服务器

    本地跑一个WebSocketServer. 跑不起来的自己去百度一下喽, npm, 不介绍喽, 百度查怎么安装。 ...

  • Gobelieve解析

    Gobelieve 架构 Gobelieve github地址 im 客户连接服务器 (可分布式部署,暂无负载均衡...

  • 消息系统架构学习分享

    文章链接 现代IM系统中的消息系统架构 - 架构篇 现代IM系统中的消息系统架构 - 模型篇 现代IM系统中的消息...

  • IM二分法智能心跳策略

    IM心跳策略 心跳的字段定义 minHeart 最小心跳,本地默认120秒,服务器定120秒 maxHeart 最...

  • 01-ROS入门-08 ROS服务通信

    1. 编写服务器程序 cd ~/joey_ws/src/joey_example1vim ~/joey_ws/sr...

  • 测试开发必修的Git技术栈,等你来学

    一、Git架构 1. Git源码管理架构图 从架构图可以看到,git是分服务器和客户端两大部分。(也就是远程与本地...

  • Gradle自动打包上传fir插件

    之前由jenkins实现打包自动上传到fir.im,但是最近本地服务器多次出现故障,就暂时停止对jenkins的使...

  • iM

    ios IM 架构设计 ios IM 网络层架构 ios 侧滑与右滑返回手势http://blog.csdn.n...

  • 01_Tomcat&Servlet

    软件架构 BS:Browser Server 浏览器-服务器模式。客户端使用浏览器来访问服务器。特点:必须在本地电...

  • Express4.x + Websocket(ws) + Ses

    笔记内容: express 服务器,搭载websocket服务器(用ws作为框架)并和 express 共享se...

网友评论

      本文标题:IM架构(一)、本地WS服务器

      本文链接:https://www.haomeiwen.com/subject/klgqhttx.html