实例介绍
后台采用开源socket.io的java实现,利用socket.io的发布订阅功能,实现简单的消息分发,目前只是个初版,可以丰富消息类型,添加上表情、文件、图片等。前端采用socket.io的android实现,另外借鉴类QQ客户端的实现。
【实例截图】
【核心代码】
b351bea3cdbee32dc2435ee18ddcab95.rar
├── IMClient
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── bin
│ │ ├── AndroidManifest.xml
│ │ ├── classes
│ │ │ └── com
│ │ │ └── im
│ │ │ ├── chat
│ │ │ │ ├── ActionManager
│ │ │ │ │ ├── ActionsManager$1.class
│ │ │ │ │ └── ActionsManager.class
│ │ │ │ ├── activity
│ │ │ │ │ ├── BuildConfig.class
│ │ │ │ │ ├── ChatActivity.class
│ │ │ │ │ ├── ChatMsgEntity.class
│ │ │ │ │ ├── ChatMsgViewAdapter$IMsgViewType.class
│ │ │ │ │ ├── ChatMsgViewAdapter$ViewHolder.class
│ │ │ │ │ ├── ChatMsgViewAdapter.class
│ │ │ │ │ ├── FriendListActivity$1.class
│ │ │ │ │ ├── FriendListActivity$MyOnPageChangeListener.class
│ │ │ │ │ ├── FriendListActivity$MyRefreshListener$1.class
│ │ │ │ │ ├── FriendListActivity$MyRefreshListener.class
│ │ │ │ │ ├── FriendListActivity.class
│ │ │ │ │ ├── GetMsgService$1.class
│ │ │ │ │ ├── GetMsgService$2$1.class
│ │ │ │ │ ├── GetMsgService$2$2.class
│ │ │ │ │ ├── GetMsgService$2$3.class
│ │ │ │ │ ├── GetMsgService$2.class
│ │ │ │ │ ├── GetMsgService$3.class
│ │ │ │ │ ├── GetMsgService.class
│ │ │ │ │ ├── GroupAdapter$ViewHoler.class
│ │ │ │ │ ├── GroupAdapter.class
│ │ │ │ │ ├── GroupEntity.class
│ │ │ │ │ ├── LoginActivity$1.class
│ │ │ │ │ ├── LoginActivity$2.class
│ │ │ │ │ ├── LoginActivity$3.class
│ │ │ │ │ ├── LoginActivity.class
│ │ │ │ │ ├── MyActivity$1.class
│ │ │ │ │ ├── MyActivity.class
│ │ │ │ │ ├── MyApplication.class
│ │ │ │ │ ├── MyExAdapter$1.class
│ │ │ │ │ ├── MyExAdapter.class
│ │ │ │ │ ├── MyListView$OnRefreshListener.class
│ │ │ │ │ ├── MyListView.class
│ │ │ │ │ ├── MyPagerAdapter.class
│ │ │ │ │ ├── R$attr.class
│ │ │ │ │ ├── R$color.class
│ │ │ │ │ ├── R$drawable.class
│ │ │ │ │ ├── R$id.class
│ │ │ │ │ ├── R$layout.class
│ │ │ │ │ ├── R$menu.class
│ │ │ │ │ ├── R$raw.class
│ │ │ │ │ ├── R$string.class
│ │ │ │ │ ├── R$style.class
│ │ │ │ │ ├── R.class
│ │ │ │ │ ├── RecentChatAdapter$1.class
│ │ │ │ │ ├── RecentChatAdapter$ViewHolder.class
│ │ │ │ │ ├── RecentChatAdapter.class
│ │ │ │ │ ├── RecentChatEntity.class
│ │ │ │ │ ├── RegisterActivity$1.class
│ │ │ │ │ ├── RegisterActivity.class
│ │ │ │ │ ├── WelcomeActivity$1.class
│ │ │ │ │ └── WelcomeActivity.class
│ │ │ │ └── common
│ │ │ │ ├── bean
│ │ │ │ │ ├── IMessage.class
│ │ │ │ │ ├── TextMessage.class
│ │ │ │ │ └── User.class
│ │ │ │ ├── tran
│ │ │ │ │ └── bean
│ │ │ │ │ ├── TranObject.class
│ │ │ │ │ └── TranObjectType.class
│ │ │ │ └── util
│ │ │ │ └── Constants.class
│ │ │ ├── client
│ │ │ │ ├── Client$ClientThread.class
│ │ │ │ ├── Client.class
│ │ │ │ ├── ClientInputThread.class
│ │ │ │ ├── ClientOutputThread.class
│ │ │ │ └── MessageListener.class
│ │ │ ├── util
│ │ │ │ ├── DBHelper.class
│ │ │ │ ├── DialogFactory.class
│ │ │ │ ├── Encode.class
│ │ │ │ ├── GroupFriend.class
│ │ │ │ ├── MessageDB.class
│ │ │ │ ├── MyDate.class
│ │ │ │ ├── PlayMsgSound.class
│ │ │ │ ├── SharePreferenceUtil.class
│ │ │ │ ├── UserDB.class
│ │ │ │ └── Utils.class
│ │ │ └── websocket
│ │ │ ├── HybiParser$HappyDataInputStream.class
│ │ │ ├── HybiParser$ProtocolError.class
│ │ │ ├── HybiParser.class
│ │ │ ├── SocketIOClient$1.class
│ │ │ ├── SocketIOClient$2$1.class
│ │ │ ├── SocketIOClient$2$2.class
│ │ │ ├── SocketIOClient$2$3.class
│ │ │ ├── SocketIOClient$2$4.class
│ │ │ ├── SocketIOClient$2$5.class
│ │ │ ├── SocketIOClient$2.class
│ │ │ ├── SocketIOClient$3.class
│ │ │ ├── SocketIOClient$4.class
│ │ │ ├── SocketIOClient$5.class
│ │ │ ├── SocketIOClient$6.class
│ │ │ ├── SocketIOClient$Acknowledge.class
│ │ │ ├── SocketIOClient$Handler.class
│ │ │ ├── SocketIOClient.class
│ │ │ ├── WebSocketClient$1.class
│ │ │ ├── WebSocketClient$2.class
│ │ │ ├── WebSocketClient$3.class
│ │ │ ├── WebSocketClient$Listener.class
│ │ │ └── WebSocketClient.class
│ │ ├── classes.dex
│ │ ├── dexedLibs
│ │ │ ├── android-support-v4-715dc96e5c4461ce952c3e24a9826c44.jar
│ │ │ ├── annotations-b7976a5853f2ae9a83b280b34b160b02.jar
│ │ │ └── gson-2.2.2-13d8ab1cf9f9b6717b29c3ee5b0e6015.jar
│ │ ├── IMClient.apk
│ │ ├── jarlist.cache
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── account_current.png
│ │ │ │ ├── addfriends_icon_icon.png
│ │ │ │ ├── arrow_down.png
│ │ │ │ ├── arrow_up.png
│ │ │ │ ├── bg_button.9.png
│ │ │ │ ├── bg_button_pressed.9.png
│ │ │ │ ├── checkbox_selected.png
│ │ │ │ ├── checkbox_selected_press.png
│ │ │ │ ├── checkbox_unselect.png
│ │ │ │ ├── checkbox_unselect_press.png
│ │ │ │ ├── dialog_bg.9.png
│ │ │ │ ├── edittext1.9.png
│ │ │ │ ├── f007.png
│ │ │ │ ├── h001.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── layout_bg1.9.png
│ │ │ │ ├── list_group.png
│ │ │ │ ├── login_bg.9.png
│ │ │ │ ├── login_button_nor.9.png
│ │ │ │ ├── login_button_press.9.png
│ │ │ │ ├── login_input.9.png
│ │ │ │ ├── login_moremenu_back.9.png
│ │ │ │ ├── login_more.png
│ │ │ │ ├── login_more_up.png
│ │ │ │ ├── login_pic2.png
│ │ │ │ ├── login_reg_normal.9.png
│ │ │ │ ├── login_reg_pressed.9.png
│ │ │ │ ├── menu_exit.png
│ │ │ │ ├── menu_setting.png
│ │ │ │ ├── mini_avatar_shadow.png
│ │ │ │ ├── mm_title_back_focused.9.png
│ │ │ │ ├── mm_title_back_normal.9.png
│ │ │ │ ├── mm_title_back_pressed.9.png
│ │ │ │ ├── mmtitle_bg.9.png
│ │ │ │ ├── myheader_bg.png
│ │ │ │ ├── notify_newmessage.png
│ │ │ │ ├── notify.png
│ │ │ │ ├── sc_bg_friendsavatar_nor.png
│ │ │ │ ├── sc_bg_friendsavatar.png
│ │ │ │ ├── sc_bg_friendsavatar_press.png
│ │ │ │ ├── splash.png
│ │ │ │ ├── tab1_normal.png
│ │ │ │ ├── tab1_over.png
│ │ │ │ ├── tab2_normal.png
│ │ │ │ ├── tab2_over.png
│ │ │ │ ├── tab3_normal.png
│ │ │ │ ├── tab3_over.png
│ │ │ │ └── topbar_select.png
│ │ │ ├── drawable-ldpi
│ │ │ │ ├── f007.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── splash.png
│ │ │ │ ├── tab1_normal.png
│ │ │ │ ├── tab1_over.png
│ │ │ │ ├── tab2_normal.png
│ │ │ │ ├── tab2_over.png
│ │ │ │ ├── tab3_normal.png
│ │ │ │ ├── tab3_over.png
│ │ │ │ └── topbar_select.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── f007.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── splash.png
│ │ │ │ ├── tab1_normal.png
│ │ │ │ ├── tab1_over.png
│ │ │ │ ├── tab2_normal.png
│ │ │ │ ├── tab2_over.png
│ │ │ │ ├── tab3_normal.png
│ │ │ │ ├── tab3_over.png
│ │ │ │ └── topbar_select.png
│ │ │ └── drawable-xhdpi
│ │ │ └── icon.png
│ │ └── resources.ap_
│ ├── gen
│ │ └── com
│ │ └── im
│ │ └── chat
│ │ └── activity
│ │ ├── BuildConfig.java
│ │ └── R.java
│ ├── libs
│ │ ├── android-support-v4.jar
│ │ └── gson-2.2.2.jar
│ ├── proguard.cfg
│ ├── project.properties
│ ├── res
│ │ ├── drawable
│ │ │ ├── button_text_color.xml
│ │ │ ├── chatfrom_bg.xml
│ │ │ ├── chat_send_button_bg.xml
│ │ │ ├── chatto_bg.xml
│ │ │ ├── checkbox_bg1.xml
│ │ │ ├── friend_item.xml
│ │ │ ├── icon.png
│ │ │ ├── img_select.xml
│ │ │ ├── login_button_bg.xml
│ │ │ ├── login_regist_bg.xml
│ │ │ ├── op_bg_selector.xml
│ │ │ ├── progressbar.xml
│ │ │ ├── pull_to_refresh_header_background.xml
│ │ │ ├── selector_btn_back.xml
│ │ │ ├── shape_bg.xml
│ │ │ ├── shape_dialog.xml
│ │ │ ├── shape_line.xml
│ │ │ ├── tab1.xml
│ │ │ ├── tab2.xml
│ │ │ └── tab3.xml
│ │ ├── drawable-hdpi
│ │ │ ├── account_current.png
│ │ │ ├── acm_bg_diaglog.9.png
│ │ │ ├── addfriends_icon_icon.png
│ │ │ ├── arrow_down.png
│ │ │ ├── arrow_up.png
│ │ │ ├── balloon_l.9.png
│ │ │ ├── balloon_l_pressed.9.png
│ │ │ ├── balloon_r.9.png
│ │ │ ├── balloon_r_pressed.9.png
│ │ │ ├── bg_button.9.png
│ │ │ ├── bg_button_pressed.9.png
│ │ │ ├── chat_bottom_send_normal.9.png
│ │ │ ├── chat_bottom_send_pressed.9.png
│ │ │ ├── checkbox_selected.png
│ │ │ ├── checkbox_selected_press.png
│ │ │ ├── checkbox_unselect.png
│ │ │ ├── checkbox_unselect_press.png
│ │ │ ├── dialog_bg.9.png
│ │ │ ├── edittext1.9.png
│ │ │ ├── f007.png
│ │ │ ├── f1.gif
│ │ │ ├── f2.gif
│ │ │ ├── f3.gif
│ │ │ ├── f4.gif
│ │ │ ├── f5.gif
│ │ │ ├── f6.gif
│ │ │ ├── f7.gif
│ │ │ ├── f8.gif
│ │ │ ├── f9.gif
│ │ │ ├── group_fold_arrow.9.png
│ │ │ ├── group_unfold_arrow.9.png
│ │ │ ├── h001.png
│ │ │ ├── icon.png
│ │ │ ├── info_bg.9.png
│ │ │ ├── layout_bg1.9.png
│ │ │ ├── lbs_notice.9.png
│ │ │ ├── list_group.png
│ │ │ ├── login_bg.9.png
│ │ │ ├── login_button_nor.9.png
│ │ │ ├── login_button_press.9.png
│ │ │ ├── login_input.9.png
│ │ │ ├── login_moremenu_back.9.png
│ │ │ ├── login_more.png
│ │ │ ├── login_more_up.png
│ │ │ ├── login_pic2.png
│ │ │ ├── login_reg_normal.9.png
│ │ │ ├── login_reg_pressed.9.png
│ │ │ ├── menu_exit.png
│ │ │ ├── menu_setting.png
│ │ │ ├── mini_avatar_shadow.png
│ │ │ ├── mm_title_back_focused.9.png
│ │ │ ├── mm_title_back_normal.9.png
│ │ │ ├── mm_title_back_pressed.9.png
│ │ │ ├── mmtitle_bg.9.png
│ │ │ ├── myheader_bg.png
│ │ │ ├── notify_newmessage.png
│ │ │ ├── notify.png
│ │ │ ├── recent_newmessage.9.png
│ │ │ ├── sc_app_bg_nor.9.png
│ │ │ ├── sc_app_bg_pressed.9.png
│ │ │ ├── sc_bg_friendsavatar_nor.png
│ │ │ ├── sc_bg_friendsavatar.png
│ │ │ ├── sc_bg_friendsavatar_press.png
│ │ │ ├── sc_lab_bar_avatar_bg.9.png
│ │ │ ├── sc_messagebubble_bg_nor.9.png
│ │ │ ├── splash.png
│ │ │ ├── tab1_normal.png
│ │ │ ├── tab1_over.png
│ │ │ ├── tab1.xml
│ │ │ ├── tab2_normal.png
│ │ │ ├── tab2_over.png
│ │ │ ├── tab2.xml
│ │ │ ├── tab3_normal.png
│ │ │ ├── tab3_over.png
│ │ │ ├── tab3.xml
│ │ │ ├── title_bar.9.png
│ │ │ ├── top_back_left.9.png
│ │ │ ├── top_back_leftpress.9.png
│ │ │ └── topbar_select.png
│ │ ├── drawable-ldpi
│ │ │ ├── f007.png
│ │ │ ├── f1.gif
│ │ │ ├── f2.gif
│ │ │ ├── f3.gif
│ │ │ ├── f4.gif
│ │ │ ├── f5.gif
│ │ │ ├── f6.gif
│ │ │ ├── f7.gif
│ │ │ ├── f8.gif
│ │ │ ├── f9.gif
│ │ │ ├── group_fold_arrow.9.png
│ │ │ ├── group_unfold_arrow.9.png
│ │ │ ├── icon.png
│ │ │ ├── recent_newmessage.9.png
│ │ │ ├── splash.png
│ │ │ ├── tab1_normal.png
│ │ │ ├── tab1_over.png
│ │ │ ├── tab2_normal.png
│ │ │ ├── tab2_over.png
│ │ │ ├── tab3_normal.png
│ │ │ ├── tab3_over.png
│ │ │ └── topbar_select.png
│ │ ├── drawable-mdpi
│ │ │ ├── f007.png
│ │ │ ├── f1.gif
│ │ │ ├── f2.gif
│ │ │ ├── f3.gif
│ │ │ ├── f4.gif
│ │ │ ├── f5.gif
│ │ │ ├── f6.gif
│ │ │ ├── f7.gif
│ │ │ ├── f8.gif
│ │ │ ├── f9.gif
│ │ │ ├── group_fold_arrow.9.png
│ │ │ ├── group_unfold_arrow.9.png
│ │ │ ├── icon.png
│ │ │ ├── recent_newmessage.9.png
│ │ │ ├── splash.png
│ │ │ ├── tab1_normal.png
│ │ │ ├── tab1_over.png
│ │ │ ├── tab2_normal.png
│ │ │ ├── tab2_over.png
│ │ │ ├── tab3_normal.png
│ │ │ ├── tab3_over.png
│ │ │ └── topbar_select.png
│ │ ├── drawable-xhdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── chatting_item_msg_text_left.xml
│ │ │ ├── chatting_item_msg_text_right.xml
│ │ │ ├── chat.xml
│ │ │ ├── dialog_layout.xml
│ │ │ ├── friend_list.xml
│ │ │ ├── head.xml
│ │ │ ├── item.xml
│ │ │ ├── loginpage.xml
│ │ │ ├── main.xml
│ │ │ ├── member_listview.xml
│ │ │ ├── notify_view.xml
│ │ │ ├── recent_chat_item.xml
│ │ │ ├── register.xml
│ │ │ ├── setting_view.xml
│ │ │ ├── tab1.xml
│ │ │ ├── tab2.xml
│ │ │ └── tab3.xml
│ │ ├── menu
│ │ │ ├── friend_list.xml
│ │ │ └── login_menu.xml
│ │ ├── raw
│ │ │ └── msg.mp3
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── style.xml
│ └── src
│ └── com
│ └── im
│ ├── chat
│ │ ├── ActionManager
│ │ │ └── ActionsManager.java
│ │ ├── activity
│ │ │ ├── ChatActivity.java
│ │ │ ├── ChatMsgEntity.java
│ │ │ ├── ChatMsgViewAdapter.java
│ │ │ ├── FriendListActivity.java
│ │ │ ├── GetMsgService.java
│ │ │ ├── GroupAdapter.java
│ │ │ ├── GroupEntity.java
│ │ │ ├── LoginActivity.java
│ │ │ ├── MyActivity.java
│ │ │ ├── MyApplication.java
│ │ │ ├── MyExAdapter.java
│ │ │ ├── MyListView.java
│ │ │ ├── MyPagerAdapter.java
│ │ │ ├── RecentChatAdapter.java
│ │ │ ├── RecentChatEntity.java
│ │ │ ├── RegisterActivity.java
│ │ │ └── WelcomeActivity.java
│ │ └── common
│ │ ├── bean
│ │ │ ├── IMessage.java
│ │ │ ├── TextMessage.java
│ │ │ └── User.java
│ │ ├── tran
│ │ │ └── bean
│ │ │ ├── TranObject.java
│ │ │ └── TranObjectType.java
│ │ └── util
│ │ └── Constants.java
│ ├── client
│ │ ├── ClientInputThread.java
│ │ ├── Client.java
│ │ ├── ClientOutputThread.java
│ │ └── MessageListener.java
│ ├── util
│ │ ├── DBHelper.java
│ │ ├── DialogFactory.java
│ │ ├── Encode.java
│ │ ├── GroupFriend.java
│ │ ├── MessageDB.java
│ │ ├── MyDate.java
│ │ ├── PlayMsgSound.java
│ │ ├── SharePreferenceUtil.java
│ │ ├── UserDB.java
│ │ └── Utils.java
│ └── websocket
│ ├── HybiParser.java
│ ├── SocketIOClient.java
│ └── WebSocketClient.java
└── MYIM
├── bin
│ ├── chat
│ │ ├── bean
│ │ │ ├── Message.class
│ │ │ └── User.class
│ │ ├── ChatChannel$1.class
│ │ ├── ChatChannel$2.class
│ │ ├── ChatChannel$3.class
│ │ ├── ChatChannel$4.class
│ │ ├── ChatChannel$5.class
│ │ ├── ChatChannel.class
│ │ ├── dao
│ │ │ ├── impl
│ │ │ │ ├── UserDaoFactory.class
│ │ │ │ └── UserDaoImpl.class
│ │ │ └── UserDao.class
│ │ ├── TranObject.class
│ │ ├── TranObjectType.class
│ │ └── util
│ │ ├── Constants.class
│ │ ├── DButil.class
│ │ └── MyDate.class
│ ├── com
│ │ └── corundumstudio
│ │ └── socketio
│ │ ├── ack
│ │ │ ├── AckManager$1.class
│ │ │ ├── AckManager$AckEntry.class
│ │ │ ├── AckManager.class
│ │ │ └── AckSchedulerKey.class
│ │ ├── AckCallback.class
│ │ ├── AckRequest.class
│ │ ├── annotation
│ │ │ ├── AnnotationScanner.class
│ │ │ ├── OnConnect.class
│ │ │ ├── OnConnectScanner$1.class
│ │ │ ├── OnConnectScanner.class
│ │ │ ├── OnDisconnect.class
│ │ │ ├── OnDisconnectScanner$1.class
│ │ │ ├── OnDisconnectScanner.class
│ │ │ ├── OnEvent.class
│ │ │ ├── OnEventScanner$1.class
│ │ │ ├── OnEventScanner.class
│ │ │ ├── OnJsonObject.class
│ │ │ ├── OnJsonObjectScanner$1.class
│ │ │ ├── OnJsonObjectScanner.class
│ │ │ ├── OnMessage.class
│ │ │ ├── OnMessageScanner$1.class
│ │ │ ├── OnMessageScanner.class
│ │ │ └── ScannerEngine.class
│ │ ├── BroadcastAckCallback$1.class
│ │ ├── BroadcastAckCallback.class
│ │ ├── BroadcastOperations.class
│ │ ├── ClientOperations.class
│ │ ├── Configuration.class
│ │ ├── Disconnectable.class
│ │ ├── DisconnectableHub.class
│ │ ├── handler
│ │ │ ├── AuthorizeHandler$1$1.class
│ │ │ ├── AuthorizeHandler$1.class
│ │ │ ├── AuthorizeHandler.class
│ │ │ ├── PacketHandler.class
│ │ │ ├── ResourceHandler$1.class
│ │ │ ├── ResourceHandler.class
│ │ │ └── SocketIOException.class
│ │ ├── HeartbeatHandler$1.class
│ │ ├── HeartbeatHandler$2.class
│ │ ├── HeartbeatHandler.class
│ │ ├── JoinIteratorsTest.class
│ │ ├── listener
│ │ │ ├── ClientListeners.class
│ │ │ ├── ConnectListener.class
│ │ │ ├── DataListener.class
│ │ │ ├── DisconnectListener.class
│ │ │ └── EventEntry.class
│ │ ├── MessageHandler.class
│ │ ├── messages
│ │ │ ├── AuthorizeMessage.class
│ │ │ ├── BaseMessage.class
│ │ │ ├── PacketsMessage.class
│ │ │ ├── WebsocketErrorMessage.class
│ │ │ ├── WebSocketPacketMessage.class
│ │ │ ├── XHRErrorMessage.class
│ │ │ ├── XHRNewChannelMessage.class
│ │ │ ├── XHROutMessage.class
│ │ │ └── XHRPacketMessage.class
│ │ ├── misc
│ │ │ ├── CompositeIterable.class
│ │ │ ├── ConcurrentHashSet.class
│ │ │ └── IterableCollection.class
│ │ ├── namespace
│ │ │ ├── EventEntry.class
│ │ │ ├── Namespace.class
│ │ │ └── NamespacesHub.class
│ │ ├── PacketHandlerTest$1.class
│ │ ├── PacketHandlerTest$2.class
│ │ ├── PacketHandlerTest.class
│ │ ├── PacketListener.class
│ │ ├── parser
│ │ │ ├── AckArgs.class
│ │ │ ├── Decoder$1.class
│ │ │ ├── DecoderAckPacketTest$1$1.class
│ │ │ ├── DecoderAckPacketTest$1.class
│ │ │ ├── DecoderAckPacketTest.class
│ │ │ ├── DecoderBaseTest.class
│ │ │ ├── Decoder.class
│ │ │ ├── DecoderConnectionPacketTest.class
│ │ │ ├── DecoderErrorPacketTest.class
│ │ │ ├── DecoderEventPacketTest.class
│ │ │ ├── DecoderException.class
│ │ │ ├── DecoderJsonPacketTest.class
│ │ │ ├── DecoderMessagePacketTest.class
│ │ │ ├── EncoderAckPacketTest.class
│ │ │ ├── EncoderBaseTest.class
│ │ │ ├── Encoder.class
│ │ │ ├── EncoderConnectionPacketTest.class
│ │ │ ├── EncoderErrorPacketTest.class
│ │ │ ├── EncoderEventPacketTest.class
│ │ │ ├── EncoderJsonPacketTest.class
│ │ │ ├── EncoderMessagePacketTest.class
│ │ │ ├── ErrorAdvice.class
│ │ │ ├── ErrorReason.class
│ │ │ ├── Event.class
│ │ │ ├── JacksonJsonSupport$AckArgsDeserializer.class
│ │ │ ├── JacksonJsonSupport$EventDeserializer.class
│ │ │ ├── JacksonJsonSupport$JsonObjectDeserializer.class
│ │ │ ├── JacksonJsonSupport.class
│ │ │ ├── JsonObject.class
│ │ │ ├── JsonSupport.class
│ │ │ ├── JsonSupportWrapper.class
│ │ │ ├── Packet.class
│ │ │ ├── PacketType.class
│ │ │ ├── PayloadTest.class
│ │ │ ├── UTF8CharsScanner.class
│ │ │ └── UTF8CharsScannerTest.class
│ │ ├── scheduler
│ │ │ ├── CancelableScheduler$1.class
│ │ │ ├── CancelableScheduler.class
│ │ │ ├── SchedulerKey$Type.class
│ │ │ └── SchedulerKey.class
│ │ ├── SocketIOClient.class
│ │ ├── SocketIOEncoder$XHRClientEntry.class
│ │ ├── SocketIOEncoder.class
│ │ ├── SocketIONamespace.class
│ │ ├── SocketIOPipelineFactory.class
│ │ ├── SocketIOServer.class
│ │ ├── transport
│ │ │ ├── BaseClient.class
│ │ │ ├── BaseTransport.class
│ │ │ ├── FlashPolicyHandler.class
│ │ │ ├── FlashSocketTransport.class
│ │ │ ├── NamespaceClient.class
│ │ │ ├── WebSocketClient.class
│ │ │ ├── WebSocketTransport.class
│ │ │ ├── XHRPollingClient.class
│ │ │ ├── XHRPollingTransport$1.class
│ │ │ ├── XHRPollingTransport$2$1.class
│ │ │ ├── XHRPollingTransport$2.class
│ │ │ └── XHRPollingTransport.class
│ │ ├── Transport.class
│ │ └── VoidAckCallback.class
│ ├── DB.properties
│ ├── IM.sql
│ └── static
│ └── flashsocket
│ ├── WebSocketMainInsecure.swf
│ └── WebSocketMain.swf
├── lib
│ ├── commons-logging.jar
│ ├── jackson-annotations-2.0.4.jar
│ ├── jackson-core-2.0.5.jar
│ ├── jackson-databind-2.0.5.jar
│ ├── jmockit-0.999.4.jar
│ ├── json-org.jar
│ ├── junit.jar
│ ├── log4j-1.2.12.jar
│ ├── mysql-connector-java-5.0.8-bin.jar
│ ├── netty-3.6.0.Final.jar
│ ├── slf4j-api-1.5.6.jar
│ └── slf4j-log4j12-1.5.6.jar
├── netty-socketio-demo
│ ├── client
│ │ ├── ack-index.html
│ │ ├── bootstrap.css
│ │ ├── event-index.html
│ │ ├── flashsocket-index.html
│ │ ├── index.html
│ │ ├── js
│ │ │ ├── jquery-1.7.2.min.js
│ │ │ ├── moment.min.js
│ │ │ └── socket.io
│ │ │ ├── socket.io.js
│ │ │ ├── WebSocketMainInsecure.swf
│ │ │ └── WebSocketMain.swf
│ │ ├── namespace-index.html
│ │ └── ssl-event-index.html
│ ├── README.md
│ └── server
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── corundumstudio
│ │ └── socketio
│ │ └── demo
│ │ ├── AckChatLauncher.java
│ │ ├── ChatLauncher.java
│ │ ├── ChatObject.java
│ │ ├── EventChatLauncher.java
│ │ ├── NamespaceChatLauncher.java
│ │ └── SslChatLauncher.java
│ └── resources
│ └── keystore.jks
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── corundumstudio
│ │ └── socketio
│ │ ├── ack
│ │ │ ├── AckManager.java
│ │ │ └── AckSchedulerKey.java
│ │ ├── AckCallback.java
│ │ ├── AckRequest.java
│ │ ├── annotation
│ │ │ ├── AnnotationScanner.java
│ │ │ ├── OnConnect.java
│ │ │ ├── OnConnectScanner.java
│ │ │ ├── OnDisconnect.java
│ │ │ ├── OnDisconnectScanner.java
│ │ │ ├── OnEvent.java
│ │ │ ├── OnEventScanner.java
│ │ │ ├── OnJsonObject.java
│ │ │ ├── OnJsonObjectScanner.java
│ │ │ ├── OnMessage.java
│ │ │ ├── OnMessageScanner.java
│ │ │ └── ScannerEngine.java
│ │ ├── BroadcastAckCallback.java
│ │ ├── BroadcastOperations.java
│ │ ├── ClientOperations.java
│ │ ├── Configuration.java
│ │ ├── DisconnectableHub.java
│ │ ├── Disconnectable.java
│ │ ├── handler
│ │ │ ├── AuthorizeHandler.java
│ │ │ ├── PacketHandler.java
│ │ │ ├── ResourceHandler.java
│ │ │ └── SocketIOException.java
│ │ ├── HeartbeatHandler.java
│ │ ├── listener
│ │ │ ├── ClientListeners.java
│ │ │ ├── ConnectListener.java
│ │ │ ├── DataListener.java
│ │ │ ├── DisconnectListener.java
│ │ │ └── EventEntry.java
│ │ ├── MessageHandler.java
│ │ ├── messages
│ │ │ ├── AuthorizeMessage.java
│ │ │ ├── BaseMessage.java
│ │ │ ├── PacketsMessage.java
│ │ │ ├── WebsocketErrorMessage.java
│ │ │ ├── WebSocketPacketMessage.java
│ │ │ ├── XHRErrorMessage.java
│ │ │ ├── XHRNewChannelMessage.java
│ │ │ ├── XHROutMessage.java
│ │ │ └── XHRPacketMessage.java
│ │ ├── misc
│ │ │ ├── CompositeIterable.java
│ │ │ ├── ConcurrentHashSet.java
│ │ │ └── IterableCollection.java
│ │ ├── namespace
│ │ │ ├── EventEntry.java
│ │ │ ├── Namespace.java
│ │ │ └── NamespacesHub.java
│ │ ├── PacketListener.java
│ │ ├── parser
│ │ │ ├── AckArgs.java
│ │ │ ├── DecoderException.java
│ │ │ ├── Decoder.java
│ │ │ ├── Encoder.java
│ │ │ ├── ErrorAdvice.java
│ │ │ ├── ErrorReason.java
│ │ │ ├── Event.java
│ │ │ ├── JacksonJsonSupport.java
│ │ │ ├── JsonObject.java
│ │ │ ├── JsonSupport.java
│ │ │ ├── JsonSupportWrapper.java
│ │ │ ├── Packet.java
│ │ │ ├── PacketType.java
│ │ │ └── UTF8CharsScanner.java
│ │ ├── scheduler
│ │ │ ├── CancelableScheduler.java
│ │ │ └── SchedulerKey.java
│ │ ├── SocketIOClient.java
│ │ ├── SocketIOEncoder.java
│ │ ├── SocketIONamespace.java
│ │ ├── SocketIOPipelineFactory.java
│ │ ├── SocketIOServer.java
│ │ ├── transport
│ │ │ ├── BaseClient.java
│ │ │ ├── BaseTransport.java
│ │ │ ├── FlashPolicyHandler.java
│ │ │ ├── FlashSocketTransport.java
│ │ │ ├── NamespaceClient.java
│ │ │ ├── WebSocketClient.java
│ │ │ ├── WebSocketTransport.java
│ │ │ ├── XHRPollingClient.java
│ │ │ └── XHRPollingTransport.java
│ │ ├── Transport.java
│ │ └── VoidAckCallback.java
│ └── resources
│ └── static
│ └── flashsocket
│ ├── WebSocketMainInsecure.swf
│ └── WebSocketMain.swf
└── test
└── java
├── chat
│ ├── bean
│ │ ├── Message.java
│ │ └── User.java
│ ├── ChatChannel.java
│ ├── dao
│ │ ├── impl
│ │ │ ├── UserDaoFactory.java
│ │ │ └── UserDaoImpl.java
│ │ └── UserDao.java
│ ├── TranObject.java
│ ├── TranObjectType.java
│ └── util
│ ├── Constants.java
│ ├── DButil.java
│ └── MyDate.java
├── com
│ └── corundumstudio
│ └── socketio
│ ├── JoinIteratorsTest.java
│ ├── PacketHandlerTest.java
│ └── parser
│ ├── DecoderAckPacketTest.java
│ ├── DecoderBaseTest.java
│ ├── DecoderConnectionPacketTest.java
│ ├── DecoderErrorPacketTest.java
│ ├── DecoderEventPacketTest.java
│ ├── DecoderJsonPacketTest.java
│ ├── DecoderMessagePacketTest.java
│ ├── EncoderAckPacketTest.java
│ ├── EncoderBaseTest.java
│ ├── EncoderConnectionPacketTest.java
│ ├── EncoderErrorPacketTest.java
│ ├── EncoderEventPacketTest.java
│ ├── EncoderJsonPacketTest.java
│ ├── EncoderMessagePacketTest.java
│ ├── PayloadTest.java
│ └── UTF8CharsScannerTest.java
├── DB.properties
└── IM.sql
120 directories, 682 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论