⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worker.java

📁 用java做的网页即时聊天系统。可以用于学习网页即时聊天功能的开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    while(User.isAlive() && (newLine = is.readLine()) != null) ;
                }
                catch(SocketException e) { }
                User.logout();
            }
            return;
        }
        if(!scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Writer"))
        	 return;
        User Dam = User.getUser((String)URIParam.get("serial"), (String)URIParam.get("pass"));
        if(Dam != null)
        	 return;;
        OK = printHeaders(ps);
        ps.print(Domain.apllyLang(Domain.defaultLang, "<h1><OpenCHAT:lang:User_not_found></h1>"));
        if(URIParam.containsKey("to") && URIParam.containsKey("msg") && ((String)URIParam.get("msg")).length() > 0)
            ((User) (Dam)).Room.send(((User) (Dam)).Name, (String)URIParam.get("action"), (String)URIParam.get("to"), URIParam.containsKey("privado"), (String)URIParam.get("msg"));
        String usersSelect = "";
        String selected = "";
        for(Enumeration e = ((User) (Dam)).Room.Root.keys(); e.hasMoreElements();)
        {
            String userName = (String)e.nextElement();
            if(userName.equals((String)URIParam.get("to")))
                selected = " selected";
            else
                selected = "";
            usersSelect = usersSelect + "<option" + selected + ">" + userName + "</option>";
        }

        String page = Domain.getTemplate("preOpened", ((User) (Dam)).Room.Name, "Writer").replaceAll("<OpenCHAT:hiddenFormInputs>", "<input type=hidden name=serial value=" + (String)URIParam.get("serial") + ">" + "<input type=hidden name=pass value=" + (String)URIParam.get("pass") + ">").replaceAll("<OpenCHAT:selectUserOptions>", "<option value=\"\"><OpenCHAT:lang:All></option>" + usersSelect).replaceAll("<OpenCHAT:selectActionOptions>", "<option value=\"<OpenCHAT:lang:talks_to>\"><OpenCHAT:lang:Talk></option>").replaceAll("<OpenCHAT:checkboxPrivateChecked>", URIParam.containsKey("privado") ? " checked" : "");
        OK = printHeaders(ps);
        ps.print(Dam.apllyLang(page));
        ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
        if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Login"))
        {
            int a = 1;
            String serial = User.newSerial();
            String password = String.valueOf(Math.abs((new Random()).nextInt()));
            page = Domain.getTemplate("preOpened", (String)URIParam.get("room"), "Login").replaceAll("<OpenCHAT:topFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Top?serial=" + serial + "&pass=" + password).replaceAll("<OpenCHAT:readerFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Reader?u=" + (String)URIParam.get("u") + "&serial=" + serial + "&room=" + (String)URIParam.get("room") + "&pass=" + password + "&type=" + (String)URIParam.get("type")).replaceAll("<OpenCHAT:writerFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Writer?serial=" + serial + "&pass=" + password);
            OK = printHeaders(ps);
            ps.print(Domain.apllyLang(Domain.defaultLang, page));
            ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
            return;
        }
        if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Status"))
        {
            OpenCHAT.p("Status Page request from .");
            String table = "\n<TABLE width=100%>\n";
//            Root;
            for(Enumeration e = Root.Root.keys(); e.hasMoreElements();)
            {
                String domainName = (String)e.nextElement();
                table = table + "<TR bgcolor=aaaaff><TD>Domain: <b>" + domainName + "</b></TD></TR>\n" + "<TR>\n";
//                Root;
                for(Enumeration eTypes = Root.getDomain(domainName).Root.keys(); eTypes.hasMoreElements();)
                {
                    String nowType = (String)eTypes.nextElement();
                    table = table + "<TD><TABLE width=100%>\n<TR bgcolor=bbbbcc><TD>Type: <b>" + nowType + "</b></TD></TR>\n";
//                    Root;
                    for(Enumeration eRooms = Root.getType(domainName, nowType).keys(); eRooms.hasMoreElements();)
                    {
                        String roomName = (String)eRooms.nextElement();
                        table = table + "<TR bgcolor=cccccc><TD>Room: <b>" + roomName + "</b></TD></TR>\n";
//                        Root;
                        Enumeration eUsers = Root.getRoom(domainName, nowType, roomName).Root.keys();
                        while(eUsers.hasMoreElements()) 
                        {
                            String userName = (String)eUsers.nextElement();
                            table = table + "<TR bgcolor=dddddd><TD>" + userName + "</TD></TR>\n";
                        }
                    }

                    table = table + "</TABLE></TD>\n";
                }

                table = table + "</TR>\n";
            }

            table = table + "</TABLE>\n";
            OK = printHeaders(ps);
            ps.print("<HTML>");
            ps.print("<!-- OpenCHAT (www.Sistemica.info) -->");
            ps.print("<HEAD><TITLE>OpenCHAT Status</TITLE></HEAD>");
            ps.print("<BODY>");
            ps.print("<b>OpenCHAT Status</b><br><br>");
            ps.print(table);
            ps.print("</BODY>");
            ps.print("</HTML>");
            return;
        }
        if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Index") || scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "") || scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "/") || scriptName.length() < 1 || scriptName == null)
        {
            if(URIParam.containsKey("u") && URIParam.containsKey("room") && ((String)URIParam.get("u")).length() > 0 && ((String)URIParam.get("room")).length() > 0)
            {
                OK = printHeaders(ps, "Location: /LOGIN?u=" + (String)URIParam.get("u") + "&room=" + (String)URIParam.get("room") + "\r\n\r\n");
            } else
            {
                String roomOptions = "";
//                Root;
                for(Enumeration e = Root.getType((String)requestENV.get("host"), "preOpened").elements(); e.hasMoreElements();)
                {
                    Room nowRoom = (Room)e.nextElement();
                    roomOptions = roomOptions + "<option value=\"" + nowRoom.Name + "\">" + nowRoom.Name + " (" + nowRoom.Root.size() + ")</option>";
                }

                page = Domain.getTemplate("preOpened", "", "Index").replaceAll("<OpenCHAT:selectRoomOptions>", roomOptions);
                OK = printHeaders(ps);
                ps.print(Domain.apllyLang(page));
                ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
            }
            return;
        }
        if(OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") != null)
        	 return;
        OK = printHeaders(ps);
        ps.print(Domain.apllyLang("<HTML><!-- OpenCHAT (www.sistemica.info) --><HEAD><TITLE><OpenCHAT:lang:Internal_Server_Error></TITLE></HEAD><BODY><h1><OpenCHAT:lang:Internal_Server_Error></h1><br><OpenCHAT:lang:File_server_not_enabled><br><br></HTML>"));
        if(!httpFile(OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") + File.separator + scriptName, ps))
        {
            OK = printHeaders(ps);
            ps.print("<h1>" + error + "</h1>");
            OpenCHAT.p("FILE " + OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") + File.separator + scriptName + " FAIL");
        }
        ps.close();
        s.close();
        return;
    }

    boolean printHeaders(PrintStream ps)
        throws IOException
    {
        return printHeaders(ps, null);
    }

    boolean printHeaders(PrintStream ps, String newHeaders)
    {
        boolean ret = false;
        ret = true;
        String headers = "HTTP/1.0 200 OK\r\nServer: OpenCHAT Server\r\nDate: " + new Date() + "\r\n" + "Connection: keep-alive\r\n" + "Cache-Control: no-cache,no-store,max-age=0\r\n" + "Pragma: no-cache\r\n" + (newHeaders != null ? newHeaders : "Content-type: text/html; charset=" + OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET") + "\r\n\r\n");
        ps.write(headers.getBytes(), 0, headers.length());
        return ret;
    }

    static void loadMimeTypes()
    {
        mimeTypes.put("", "text/plain");
        mimeTypes.put("html", "text/html");
        mimeTypes.put("jpg", "image/jpeg");
    }

    boolean httpFile(String fileString, PrintStream ps)
    {
        File file;
        String fileName;
        String contentType;
        if(mimeTypes.isEmpty())
            loadMimeTypes();
        file = new File(fileString);
        fileName = file.getName();
        String fileExt = fileName.lastIndexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase() : "";
        if(mimeTypes.containsKey(fileExt))
            contentType = (String)mimeTypes.get(fileExt);
        else
            contentType = "text/plain";
        byte buffer[] = new byte[2048];
        FileInputStream in;
		try {
			in = new FileInputStream(file);
		
        boolean OK = printHeaders(ps, contentType + "\r\n\r\n");
        int n;
        try {
			while((n = in.read(buffer)) > 0) 
			    ps.write(buffer, 0, n);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
        boolean flag  = true;
        return flag;
    }

    static final byte EOL[] = {
        13, 10
    };
    public String error;
    private Socket s;
    public static Hashtable mimeTypes = new Hashtable();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -